【发布时间】:2009-04-08 08:02:01
【问题描述】:
我有一个继承向量并具有一些附加功能的新类 Seq。我可以将向量的所有方法与 Seq 一起使用。
拥有这个数据结构:
Seq< vector<int> > sweepEvents;
我想要一个函数,它在sweepEvents 中进行元素向量边缘搜索,并将迭代器返回到sweepEvents 中找到的元素的位置(当且仅当找到edge)和指向向量最后一个元素的迭代器(当且仅当未找到 edge 时)。
然后我想使用这个迭代器,因为我想比较迭代器上一个位置和下一个位置的元素。
我有以下函数用于创建和返回迭代器:
Seq< vector<int> >::iterator QSweep::insertSweepEvents(edge_t edge,int currentDim){
int changePosition;
int found=0;
for (int i=0;i<currentDim;i++){
if (edge[0]==sweepEvents[i][1]){
changePosition=i;
found=1;
return sweepEvents.begin()+changePosition;
}
}
if (found==1){
sweepEvents.rep().insert(sweepEvents.begin()+changePosition,edge);
sweepEvents.rep().erase(sweepEvents.begin()+changePosition+1);
}
else{
sweepEvents.rep().insert(sweepEvents.end(),edge);
}
return sweepEvents.end()-1;
}
然后我在主函数中调用这个迭代器。我实际上尝试过,但它没有编译,我不知道除此之外要使用什么语法:
int main(){
Seq< vector<int> > sweepEvents;
vector<int> edge;
//.....initialize sweepEvents and edge
//declare iterator but not working
Seq< vector<int> >::iterator comparePosition;
//not working neither
comparePosition=insertSweepEvents(edge,sweepEvents.size());
}
关于我应该如何正确调用迭代器的任何想法?我发现它不能作为数组中的整数索引?
【问题讨论】:
-
你的意思是“不工作”?结果不好,编译器错误,核心?
-
comparePosition 的定义和之后的 comparePosition 赋值的编译器错误。
-
你的 if (found==1) 块永远不会被执行,因为当你设置 found = 1 时你会返回。你在哪个编译器中会遇到什么编译器错误?