Mid*_*per 1 c++ pointers vector erase
因此,我试图将向量b中的元素追加到向量a的末尾,同时删除向量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
}
}
Run Code Online (Sandbox Code Playgroud)
当矢量大小动态变化时,删除循环中的一个元素并不是一个好主意,这将很容易丢失正确的索引轨道.
相反,尝试最后删除所有b元素:
b.clear();
Run Code Online (Sandbox Code Playgroud)
PS:有一种更简单的方法可以通过使用将向量附加到另一个向量, std::vector::insert()这样您只需要:
a.insert( a.end(), b.begin(), b.end() );
b.clear();
Run Code Online (Sandbox Code Playgroud)