vector<int> num;
for (int i=0; i<10; ++i)num.push_back(i);
num.push_back(10);
num.push_back(10);
cout << "Original array:\n";
//vector<int>::iterator it; //C++11之前用的,11之后可以用auto
for (auto it=num.begin(); it!=num.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
num.insert(num.begin()+2,3,10); //在num[2]之前加3个10
cout << "Inserted array:\n";
for (auto it=num.begin(); it!=num.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
//delete 10
for (auto it=num.begin(); it!=num.end(); ++it)
{
if ( *it == 10 )
{
num.erase(it); //删除it指向的元素,后it自动指向下一个元素;所以不用移动it了,为了中和 ++it,才有 --it
--it;
}
} // num.erase(remove(num.begin(),num.end(),10),num.end());//这句可以代替上面的整个for循环
cout << "Deleted 10 array:\n";
for (auto it=num.begin(); it!=num.end(); ++it)
{
cout << *it << " ";
}
for (auto it=num.begin(); it!=num.end(); ++it)
{
if ( *it == 10 )
{
num.erase(it); //删除it指向的元素后,it自动指向下一个元素;所以不用移动it了,为了中和 ++it,才有 --it
--it;
}
}
或者
for (auto it=num.begin(); it!=num.end();)
{
if ( *it == 10 )
num.erase(it);
else
++it;
}
或者
num.erase(remove(num.begin(),num.end(),10),num.end());//这句可以代替上面的整个for循环
运行结果:
成员函数 insert() 用来插入元素:返回 iterator 指向新插入元素的头
用erase() 来删除某一位置元素,返回 iterator 指向被删除的元素的尾。
C++98声明:
iterator erase (iterator position); iterator erase (iterator first, iterator last);
C++11声明:
iterator erase (const_iterator position); iterator erase (const_iterator first, const_iterator last);
Removes from the vector either a single element (position) or a range of elements ([first,last)).
而pop_back() 是表示弹出最后一个元素,无参数,无返回值。
- vector 的迭代器
或者: