【发布时间】:2011-10-01 22:51:53
【问题描述】:
我需要遍历这个向量并删除重复项。此代码中某处发生分段错误。我的猜测是它与在迭代器运行时删除元素有关,但我对这些迭代器实际上是如何工作的还没有具体的了解,所以我无法弄清楚。
vector<char *>::iterator iter;
for (iter = v->begin(); iter != v->end()-1; iter++ ){
char *aString = *iter;
int n = 1;
while(iter+n != v->end()){
int comparison = strcmp(aString, *(iter+n));
if(comparison == 0){
v->erase(iter + n);
}
n++;
}
}
【问题讨论】:
-
别猜了。在调试器中运行它并找出导致段错误的原因。
-
向量绝不是空的,是吗?
-
@weezybizzle - 看看我的回答,你的代码中确实只有几个小的错误。