求问下面关于C++中关于 Iterator 的问题 10
#include<iostream>usingnamespacestd;template<typenameIterator>int*lcsLength(Iteratorx...
#include<iostream>
using namespace std;
template<typename Iterator>
int* lcsLength(Iterator x,Iterator y, int m, int n){
int *c=new int[(m+1)*(n+1)],i,j;
for(i=1;i<=m;i++)
c[i*(n+1)]=0;//c[i, 0]←0
for(j=0;j<=n;j++)
c[j]=0;//c[0,j] ←0
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(*(x+i-1)==*(y+j-1))//if x[i]=y[j]
c[i*(n+1)+j]=c[(i-1)*(n+1)+j-1]+1;//c[i,j] ←c[i-1,j-1]+1
else if(c[(i-1)*(n+1)+j]>=c[i*(n+1)+j-1])
c[i*(n+1)+j]=c[(i-1)*(n+1)+j];// c[i,j] ←c[i-1,j]
else
c[i*(n+1)+j]=c[i*(n+1)+j-1];// c[i,j] ←c[i,j-1]
return c;
}
Iterator x,Iterator y,有什么作用啊? 展开
using namespace std;
template<typename Iterator>
int* lcsLength(Iterator x,Iterator y, int m, int n){
int *c=new int[(m+1)*(n+1)],i,j;
for(i=1;i<=m;i++)
c[i*(n+1)]=0;//c[i, 0]←0
for(j=0;j<=n;j++)
c[j]=0;//c[0,j] ←0
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(*(x+i-1)==*(y+j-1))//if x[i]=y[j]
c[i*(n+1)+j]=c[(i-1)*(n+1)+j-1]+1;//c[i,j] ←c[i-1,j-1]+1
else if(c[(i-1)*(n+1)+j]>=c[i*(n+1)+j-1])
c[i*(n+1)+j]=c[(i-1)*(n+1)+j];// c[i,j] ←c[i-1,j]
else
c[i*(n+1)+j]=c[i*(n+1)+j-1];// c[i,j] ←c[i,j-1]
return c;
}
Iterator x,Iterator y,有什么作用啊? 展开
2个回答
展开全部
为了以后用到类似函数时不用重新定义了,建议你看下C++中的模板那块。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
优特美尔电子
2024-11-20 广告
2024-11-20 广告
优特美尔商城是深圳市优特美尔电子有限公司所属的一站式电子元器件采购平台, 依托创始人在电子元器件18年的积累,目前平台汇集了近 3000家品牌供应商、近3000万现货SKU,海内外注册用户超过3万,日均询单2000+。 优特美尔商城基于货源...
点击进入详情页
本回答由优特美尔电子提供
展开全部
迭代器阿 ^^^
追问
这个 看上去是个模板啊,但是调用函数时并没有像一般的模板那样指明是 什么类型(比如int)
是通过Iterator这个词表明是迭代么? 迭代这个词 具体到这个函数 是个什么意思呢?3KS
追答
这里Iterator只是个符号。模板声明时是不指定具体类型的,你也可以把Iterator换成T,一样的。调用的时候要指定类型。
当然看你这个函数的实现,应该是一个迭代器(Iterator)类型才有意义,因为里面至少有=和*的操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询