一、vector删除元素
容器类型 | 函数 | 是否改变容器大小 |
---|---|---|
vector | pop_back() | YES |
vector | erase(iterator) | YES |
vector | erase(iterator,iterator) | YES |
vector | remove | NO |
#include<iostream>
#include<vector>
#include<functional>
#include<algorithm>
using namespace std;
int main()
{
vector<int> vec;
vec.push_back(100);
vec.push_back(200);
vec.push_back(300);
vec.push_back(300);
vec.push_back(300);
vec.push_back(300);
vec.push_back(500);
vec.push_back(500);
vec.push_back(500);
vec.push_back(600);
cout << &vec << endl;
vector<int>::iterator itor;
//STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除。
//若要真正移除,需要搭配使用erase()。
vector<int>::iterator ret = remove(vec.begin(), vec.end(), 200);
for (auto i : vec)
{
cout << i << " ";
}
cout << endl;
vec.erase(ret, vec.end());
for (auto i : vec)
{
cout << i << " ";
}
cout << endl;
for (itor = vec.begin(); itor != vec.end(); itor++)
{
if (*itor == 300)
{
itor = vec.erase(itor);
itor--;
}
}
for (auto i : vec)
{
cout << i << " ";
}
cout << endl;
vec.erase(vec.begin() + 1, vec.end()-1);
for (itor = vec.begin(); itor != vec.end(); itor++)
{
cout << *itor << " ";
}
cout << endl;
system("pause");
return 0;
}
二、list删除元素
容器类型 | 函数 | 是否改变容器大小 |
---|---|---|
list | pop_back() | YES |
list | pop_front() | YES |
list | clear() | YES |
list | erase(iterator) | YES |
list | erase(iterator,iterator) | YES |
list | remove(val) | YES |
#include<iostream>
#include<vector>
#include<list>
using namespace std;
int main()
{
list<int> list;
list = { 100,100,200,300,300,300,300,500,500 };
list.push_back(600);
list.pop_front();
for (auto i : list)
{
cout << i << " ";
}
cout << endl;
//注意这里的remove和vector使用的remove函数不同
//这里remove是容器list的成员函数
list.remove(300);
for (auto i : list)
{
cout << i << " ";
}
cout << endl;
list.clear();
cout << list.size() << endl;
system("pause");
return 0;
}