Iterator
用于操作复杂的数据结构,类似于指针,指向数据结构的位置,*it用于读取数据
关于嵌套容器的迭代器使用:
set< vector<int> >::iterator it;
for(it=s.begin();it!=s.end();it++)
{
vector<int> ivec=*it;
for(vector<int>::iterator it2=ivec.begin();it2!=ivec.end();it2++)
cout<<*it2<<",";
ivec.clear();
cout<<endl;
}
Vector
可以随意插入,删除数据
- #include<vector>
- 定义及初始化
vector<int> vec;
Vector<int> vec(10); 指定元素个数
Vector<int>vec(arr,arr+n);
可以使用类似于数组的操作[]: vec[x];
3.基本操作:
Push_back() 添加到容器末尾
Size() 获取元素数量
Insert( pos, value)指定索引处插入元素
Insert(pos,cnt,value)指定索引处添加cnt个 value元素
Pop_back() 删除末位元素
Begin() 第一元素的迭代器
End() 迭代器
Swap() void swap(vector &other)将两个矢量的内容交换
4.遍历
下标法:vec[i]
迭代器法:
Vector<int>::iterator it;
For(it=vec.begin();it!=vec.end();it++)
Cout<<*iterator;
Stack
- #include<stack>
- 定义初始化
Stack<string>s;
3.基本操作:
Push();
Pop(); 删除栈顶元素
Top(); 访问栈顶元素
Empty();
Queue
- #include<queue>
- Queue<int> q;
- Push(); 队尾插入
Pop(); 删除第一个元素
Empty();
Size();
Priopity_queue
优先队列,实现自动排序
- #include<queue>
- Priopity_queue<int,vector<int>,greater<int> >pq; 从小到大
Priopity_queue<int,vector<int>,less<int> >pq; 从大到小
Map
元素默认按键的升序排列
- #include<map>
- Map<string,int>m;
可以使用类似数组的操作[]: m[key]=value
3.基本操作
Insert( make_pair<string,int>(key,value) ) 在原map后继续插入键值对
Insert( map<string,int>::value_type(key,value) ) 插入到map的最前面
获取map的key,value要用到迭代器
Map<string,int>::iterator it=m.begin(); 必须要获取迭代器首地址
String key=it->first; int val=it->second; 键key是第一个,值value是第二个
Erase(key); 根据key删除value
Set
元素默认升序排列
- #include<set>
- Set<int> s;
初始化:用数组存放数据,然后用数组初始化set
Int arr[5]={........};
Set<int> s(arr,arr+5);
自定义集合的排列顺序,编写class对象函数,判断大小:set<int,class> s;
3.基本操作:
Insert();
Erase();
Count(); 返回某个值元素的个数,也可用于判断集合中是否存在该值
Find(); 返回一个指向被查到元素的迭代器