从向量C ++删除类元素

时间:2020-04-29 20:00:03

标签: c++ vector

当我试图从向量中删除一个元素时,我遇到了一个问题。 Vector填充有Class元素(类称为Node)。所以我尝试了这个:

int index = 2;
vector<Node> openNodesSet;
openNodesSet.erase(index);

但这不起作用。我找到了解决方案:

int index = 2;
vector<Node> openNodesSet;
vector<Node>::iterator it = openNodesSet.begin();
advance(it, lowestIndex);
openNodesSet.erase(it);

有人能解释我为什么第一种方法不起作用而第二种方法没有问题吗?还有其他方法可以从向量中删除元素吗?

1 个答案:

答案 0 :(得分:2)

这是因为erase使用iterator作为参数,因此如果您想尝试第一次尝试:

int index = 2;
vector<Node> openNodesSet;
openNodesSet.erase(openNodeSet.begin()+index);

vector::erase() doc说:

iterator erase( iterator pos );
iterator erase( const_iterator pos );
参数
pos -要删除元素的迭代器

相关问题