一、容器的修改
insert():在指定位置插入一个或多个元素 |
erase():删除指定位置或指定范围的元素 |
push_back():将元素添加到容器的末尾 |
pop_back():删除容器的最后一个元素 |
push_front():将元素添加到容器的开头 |
pop_front():删除容器的第一个元素 |
resize():改变容器的大小 |
capacity():输出的是Vector数组内部存储空间的容量大小 |
注:1、动态数组Vector没有提供头部增删(push_front()、pop_front())功能(和数组一样,删除除尾部索引的需要修改后面元素的索引值,很繁琐),链表list有。
2、resize():改变容器的大小(能容纳的元素个数)。
代码示例:通过上述函数,实现动态数组vector的增删改查。
#include <vector>
#include <list>
#include <iostream>
#include <string>
using namespace std;int main()
{vector<int>vec = {1,2,3,4,5};list<int>lst = {1,2,3,4,5};auto it = vec.begin();vec.insert(it + 2,10);//在第三个位置插入元素10,迭代器加法操作只适用于vector容器操作it = vec.begin();vec.erase(it + 1);//删除第二个元素// 使用push_back()和pop_back()函数在容器尾部添加和删除元素vec.pop_back();//删除末尾元素vec.push_back(6);//添加末尾元素6// for(it = vec.begin();it != vec.end();it++)// {// if(it != vec.end()-1)// cout<<*it<<",";// else// cout<<*it;// }for(auto i:vec)//foreach遍历{cout<<i<<",";}cout<<endl;cout<<"vec动态数组的容器中元素个数是:"<<vec.capacity()<<endl;vec.resize(20);cout<<"修改容器大小后的容器元素个数:"<<vec.capacity()<<endl;// cout<<"容器vec所占内存空间大小为:"<<sizeof(vec)<<"字节"<<endl;// 使用push_front()和pop_front()函数在容器头部添加和删除元素lst.pop_front();lst.push_front(10);cout<<"lst中的元素有:";for(auto i = lst.begin();i != lst.end();i++){if(i != lst.end()--)cout<<*i<<",";elsecout<<*i;}return 0;
}
运行结果:
1,10,3,4,6,
vec动态数组的容器中元素个数是:10
修改容器大小后的容器元素个数:20
容器vec所占内存空间大小为:24字节
lst中的元素有:10,2,3,4,5,
二、容器的操作
sort():对容器中的元素进行排序 (不适用于list) |
reverse():将容器中的元素反转 |
unique():去除容器中相邻的重复元素 |
count():计算容器中指定元素的数量 |
find():在容器中查找指定元素,并返回其位置的迭代器 |
remove():从容器中删除指定元素(将要删除元素移到末尾) |
注:unique()、remove()函数操作方式,vector和list,不同,list(链表)可以直接使用,而vector需要配合erase()删除操作才能使用。
vector代码示例:
vec.erase(unique(vec.begin(),vec.end()),vec.end());
//将相邻并相等的元素,取其一,移动到数组的后面
//返回移动到数组末尾的第一个元素的迭代器
//最后将移动到数组末尾的元素进行删除。vec.erase(remove(vec.begin(),vec.end(),4),vec.end());
//将要移除的元素(4),移动到数组的后面
//返回移动到数组末尾的第一个元素的迭代器
//最后将移动到数组末尾的元素进行删除。
list代码示例:
lst.unique();
lst.remove(4);
三、案例代码
代码示例:
#include <iostream>
#include <vector>
#include <list>
#include <algorithm>
using namespace std;int main()
{vector<int>vec = {5,3,3,1,4,2};list<int>lst = {5,3,3,1,4,2};sort(vec.begin(),vec.end());for(auto it = vec.begin();it != vec.end();it++){if(it != vec.end()-1)cout<<*it<<",";elsecout<<*it;}cout<<endl;reverse(vec.begin(),vec.end());cout<<"---------------"<<endl;for(auto it = vec.begin();it != vec.end();it++){if(it != vec.end()-1)cout<<*it<<",";elsecout<<*it;}cout<<endl;vec.erase(unique(vec.begin(),vec.end()),vec.end());cout<<"---------------"<<endl;for(auto it = vec.begin();it != vec.end();it++){if(it != vec.end()-1)cout<<*it<<",";elsecout<<*it;}cout<<endl;vec.erase(remove(vec.begin(),vec.end(),4),vec.end());cout<<"---------------"<<endl;for(auto it = vec.begin();it != vec.end();it++){if(it != vec.end()-1)cout<<*it<<",";elsecout<<*it;}cout<<endl;lst.sort();lst.unique();lst.remove(4);cout<<"---------------"<<endl;auto i = lst.begin();advance(i,lst.size()-1);for(auto it = lst.begin();it != lst.end();it++){if(it != i)cout<<*it<<",";elsecout<<*it;}cout<<endl;return 0;
}
运行结果:
1,2,3,3,4,5
---------------
5,4,3,3,2,1
---------------
5,4,3,2,1
---------------
5,3,2,1
---------------
1,2,3,5