【发布时间】:2013-12-15 12:14:32
【问题描述】:
我想从向量中删除对象。向量通过引用传递,我迷路了。我已经尝试过brickList.erase(it) 以及组合擦除删除,但我无法弄清楚正确的表达方式。
有人会在评论行中帮助我吗?在一般情况下,假设有 100 个随机位置的砖块。
#include "stdafx.h"
#include <iostream>
#include <vector>
class Brick {
private:
int position;
public:
Brick(int);
int getPosition();
};
Brick::Brick(int p) : position(p) {};
int Brick::getPosition() { return position; }
void removeBricks(int a, int b, std::vector<Brick> &brickList) {
std::vector<Brick>::iterator it;
for (it = brickList.begin(); it != brickList.end(); ++it) {
int currentPos = (*it).getPosition();
if (currentPos >= a && currentPos <= b) {
// here I need help to delete objects
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<Brick> myBricks;
for (int i = 0; i<10; ++i) {
Brick tmp_brick(i);
myBricks.push_back(tmp_brick);
}
// delete all bricks with position between 3 and 5
removeBricks(3, 5, myBricks);
system("pause");
return 0;
}
【问题讨论】:
-
brickList.erase(it);它是直接的解决方法,虽然你并不需要一个循环,因为如果你使用 2 个迭代器,你可以删除一个范围。 -
我尝试了brickList.erase(it),但出现错误:向量迭代器不可递增。
标签: c++ object vector reference