從向量中擦除元素我想使用擦除方法從向量中清除一個(gè)元素。但這里的問題是,不能保證元素在向量中只出現(xiàn)一次。它可能多次出現(xiàn),我需要把它們?nèi)壳宄N业拇a是這樣的:void erase(std::vector<int>& myNumbers_in, int number_in){
std::vector<int>::iterator iter = myNumbers_in.begin();
std::vector<int>::iterator endIter = myNumbers_in.end();
for(; iter != endIter; ++iter)
{
if(*iter == number_in)
{
myNumbers_in.erase(iter);
}
}}int main(int argc, char* argv[]){
std::vector<int> myNmbers;
for(int i = 0; i < 2; ++i)
{
myNmbers.push_back(i);
myNmbers.push_back(i);
}
erase(myNmbers, 1);
return 0;}這段代碼顯然會(huì)崩潰,因?yàn)槲以诘鷷r(shí)更改了向量的結(jié)尾。實(shí)現(xiàn)這一目標(biāo)的最佳途徑是什么?即。有沒有辦法做到這一點(diǎn),而不迭代向量多次或創(chuàng)建一個(gè)向量的副本?
從向量中擦除元素
動(dòng)漫人物
2019-06-11 13:08:22