嗨,我写了这个,但运行时我遇到了一些错误
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个点矢量)我想检查每个轨道,如果它们包含点,则删除第一个,否则删除轨道.它是否正确?
提前致谢.
sth*_*sth 34
向量erase()使现有迭代器无效,但它返回一个新的迭代器,该迭代器指向被移除的元素之后的元素.返回的迭代器可用于继续迭代向量.
你的循环可以像这样写:
vector< vector<Point> >::iterator track = tracks_.begin();
while (track != tracks_.end()) {
if (track->empty()) {
// if track is empty, remove it
track = tracks_.erase(track);
}
else {
//if there are points, deque
track->erase(track->begin());
++track;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21543 次 |
| 最近记录: |