当我试图从向量中删除一个元素时,我遇到了一个问题。 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);
有人能解释我为什么第一种方法不起作用而第二种方法没有问题吗?还有其他方法可以从向量中删除元素吗?
答案 0 :(得分:2)
这是因为erase
使用iterator
作为参数,因此如果您想尝试第一次尝试:
int index = 2;
vector<Node> openNodesSet;
openNodesSet.erase(openNodeSet.begin()+index);
iterator erase( iterator pos );
iterator erase( const_iterator pos );
参数
pos -要删除元素的迭代器