map 是一种关联容器,关联形式为key-value,通过关键字来取代位置查找数组; 关键字不能重复
1. 创建空map
#include <map>
map<string,string> a; 声明map容器a;
a["name"] = "xiaoming"; 初始化;
声明+初始化:
map<string, string> b {
{"name1", "xiaoming"},
{"name2", "xiaohong"},
{"name3", "xiaoqiao"}
};
2. 基本操作
b.begin(); 返回指向a头部的迭代器;
b.clear(); 删除所有元素;
b.count(); 返回指定元素的个数;
b.empty(); 如果map为空则返回true;
b.end(); 返回指向map末尾的迭代器;
b.erase(); 删除一个元素;
b.find(); 查找一个元素;
b.insert(); 插入一个元素;
b.size(); 返回map中元素的个数;
b.swap(); 交换两个map;
b.rbegin(); 返回一个指向map尾部的逆向迭代器
b.rend(); 返回一个指向map头部的逆向迭代器
3. 遍历
正向遍历:
map<string, string> b {
{"name1", "xiaoming"},
{"name2", "xiaohong"},
{"name3", "xiaoqiao"}
};
map<string, string>::iterator it;
for(it = b.begin(); it != b.end(); it++){
cout<<(*it).first<<":"<<(*it).second<<endl;
}
反向遍历:
map<string, string>::iterator it;
for(it = b.rbegin(); it != b.rend; it++){
cout<<(*it).first<<":"<<(*it).second<<endl;
}
set是一个内部自动有序且不含重复元素的容器;
set 最主要作用是自动去重并按升序排序,当需要碰到数组去重,可以尝试使用set解决
1. 定义
#include <set>
set<int> a;
set<double> b;
2. 遍历
只能通过迭代器方式进行遍历,如下
set<int> a;
a.insert(1);
a.insert(2);
set<int>::iterator it;
for(it = a.begin(); it != a.end(); it++){
cout<<(*it)<<endl;
}
3. 基本操作
a.insert(2); 将2插入到容器a中
a.find(1); 返回a中对应1的迭代器
a.size();返回a中元素的个数;
a.clear(); 清除a中所有的元素;