相关疑难解决方法(0)

迭代时删除

可能重复:
Vector.erase(Iterator)导致错误的内存访问
迭代向量,删除某些项目.

嗨,我写了这个,但运行时我遇到了一些错误

for (vector< vector<Point> >::iterator track = tracks_.begin(); track != tracks_.end(); track++) {
        if (track->empty()) { // if track is empty, remove it
            tracks_.erase(track);
            track++; // is this ok?
        }else {   //if there are points, deque
            track->erase(track->begin()); //my program crashes here after a while... ;(
        }
    }
Run Code Online (Sandbox Code Playgroud)

我有一个矢量点(2英寸)矢量我称之为轨道(1个轨道是1个点矢量)我想检查每个轨道,如果它们包含点,则删除第一个,否则删除轨道.它是否正确?

提前致谢.

c++ stl

13
推荐指数
1
解决办法
2万
查看次数

C++迭代器问题

我正在使用C++上的迭代器,我在这里遇到了一些麻烦.它在行interIterator ++上的表达式(this - > _ Has_container())上说"Debug Assertion Failed".距离列表是向量<vector <DistanceNode >>.我做错了什么?

vector< vector<DistanceNode> >::iterator externIterator = distanceList.begin();

   while (externIterator != distanceList.end()) {

    vector<DistanceNode>::iterator interIterator = externIterator->begin();

        while (interIterator != externIterator->end()){

          if (interIterator->getReference() == tmp){

     //remove element pointed by interIterator
     externIterator->erase(interIterator);             

          } // if
    interIterator++;
  } // while
  externIterator++;
   } // while      
Run Code Online (Sandbox Code Playgroud)

c++ iterator vector

3
推荐指数
2
解决办法
1670
查看次数

从向量中删除最后一个元素会导致迭代出现问题

这是我的代码:

vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
v.push_back(6);
v.push_back(7);

for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
{
    if (*it == 7)
        v.erase(it);
    cout << *it << endl;
}
Run Code Online (Sandbox Code Playgroud)

问题是,for循环不会停止运行并打印垃圾值。您能否对这个问题给出一些见解...比如最后一个元素可能存储有关大小或地址的信息end()

使用该erase()方法对于向量中的其他位置(最后一个元素除外)效果很好。

控制台日志显示垃圾值,如下所示:

34603778
35652354
50397954
34603592
34603536
34603536
34603536
34603536
34603794
36700688
34603536
34603536
34865684
51511824
34603536
34865680
Run Code Online (Sandbox Code Playgroud)

c++ iterator stdvector

2
推荐指数
1
解决办法
86
查看次数

标签 统计

c++ ×3

iterator ×2

stdvector ×1

stl ×1

vector ×1