所以我试图将 vector b 中的元素附加到 vector a 的末尾,同时删除 vector b 中的所有内容。下面是我的代码,由于某种原因删除不能正常工作。感谢任何输入 Thx!!
void problem3(std::vector<int>& a, std::vector<int>& b){
typedef std::vector<int>::iterator iter;
int place_holder;
for (iter i = b.begin();i !=b.end();i++){
place_holder = *i;//use place hodler to store values temporairly
a.push_back(place_holder);//erase the elements from b
b.erase(i);
//std::cout<<b.size()<<'\n';
//append at the end of a
}
}
最佳答案
在循环中删除一个元素不是一个好主意,因为 vector 大小是动态变化的,你很容易失去正确的索引轨道。
相反,尝试在最后一次删除所有 b
的元素:
b.clear();
附注:有一种更简单的方法可以使用 std::vector::insert()
将 vector 附加到另一个 vector 上这样您所需要的就是:
a.insert( a.end(), b.begin(), b.end() );
b.clear();
关于c++ - 我无法正确删除 vector 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23421119/