Set
头文件 #include <set>
set不重复存储元素,同一个元素的第二次插入无效。
set按升序排序顺序存储元素
定义set对象: set<ElemType> s;
遍历方法:
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;
s.insert(1);
s.insert(2);
set<int>::iterator iter;
for(iter=s.begin();iter!=s.end();iter++){
cout<<*iter<<endl;
}
}
Map
头文件 #include <map>
定义方式:
map<KeyType, ElemType> m;
默认根据KeyType进行升序排序存储
添加或获取map元素的最简便方法:直接使用m[key]操作
m[new_key]=new_data;//插入新键值对
m[key]=new_data;//修改键值对
ElemType value=m[key];//获取与key对应的value值
注意key要存在于map中,假如key不存在,运行语句 int value=m[key]; 会导致创建新键值对,且返回默认值0给value
//一个key存在:m.find(key)!=m.end()
//得到这个key对应的值:
if(m.find(key)!=m.end())
{
int val=m.find(key)->second;
}
遍历map:
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<string,int> m;
m["ZZH"]=18000;
m["ZHF"]=16000;
m["ZLG"]=17000;
map<string,int>::iterator iter;
for(iter=m.begin();iter!=m.end();iter++)
{
cout<<iter->first<<" " <<iter->second<<endl;//iter->first是key,iter->second是值
}
}
Vector
头文件 #include <vector>
定义方式
a) vector<int>v1;//vector元素为 int 型
b) vector<string>v2;// vector元素为string型
c) vector<node>v3;//入队元素为结构体型,结构体可以自行定义
vector<int>::iterator it;//定义一个迭代器
常用操作
v1.erase(pos) //删除pos位置的数据 比如V.erase(V.begin()+pos);
v1.erase(beg,end)// 删除[beg,end)区间的数据 比如V.erase(V.begin()+start,V.begin()+end);
v1.insert(pos,data) //在pos处插入数据 比如V.erase(V.begin()+pos,data);
v1.push_back() //在数组的最后添加一个数据
v1.pop_back() //去掉数组的最后一个数据
v1.front() //返回第一个元素(栈顶元素)
v1.clear() // 移除容器中所有数据
v1.empty() //判断容器是否为空
v1.size() //回容器中实际数据的个数
List
list与vector区别:
list是双向链表,vector是连续性空间存储的数组
当插入、删除节点比较多时用list,随机访问比较到时用vector
头文件 #include<list>
定义方式:
list<int> a;
常用操作:
push_back(value) 从list的末端插入一个元素
push_front(value) 从list的头部插入一个元素
pop_back() 删掉尾部第一个元素
pop_front() 删掉头部第一个元素
empty() 判断list是否为空
clear() 清空list中的所有元素
front()获得list容器中的头部元素
back()获得list容器的最后一个元素
swap(a, b);交换两个链表。
reverse(b.begin(),b.end()); 实现list的逆置
l.insert(iter,value) 在指定位置插入一个元素,不能用l.begin()+pos,只能用迭代器指定位置
l.erase(l.begin()+pos); //将l的第一个元素删除
l.erase(l.begin(),l.begin()+pos); //将l的从begin()到begin()+pos之间的元素删除。
remove(value) 从list中删除值为value的所有元素
list的遍历:
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> l;
l.push_back(1);
l.push_back(2);
l.push_front(3);
list<int>::iterator iter;
for(iter=l.begin();iter!=l.end();iter++){
cout<<*iter<<endl;
}
}