1.map容器底层结构和set容器类似。但是map容器中的没有元素是一个键值对,即一个pair类型的元素,first为元素的键,second为元素的值。
2.map容器中会按照元素的键值来进行排序,并且map容器中不允许出现相同的键值的元素,multimap容器中允许出现键值一样的元素
3.不能通过map的迭代器来修改元素的键值,但是可以修元素的value值。因为map容器是使用键值排序的而不是value值。
4.map的构造,赋值,swap,empty,size函数的使用与set容器一致
5.insert向map容器中插入数据,inset的返回值是一个
(1)几种不同的插入方式
std::map<int,int> map;
map.insert(std::pair<int,int>(1,10));
map.insert(std::make_pair(2,20));
map.insert(std::map<int,int>::value_type(3,30));
map[4]=40;
遍历:
for (std::map<int, int>::iterator it = map.begin(); it != map.end();it++) {
std::cout<<(*it).first<<" "<<it->second <<std::endl;
}
6.clear和erase的用法也和set类似,但是map容器通过erase传入一个元素进去删除与该元素相同的元素的时候,这里只传入key值,会删除map容器中key值相等的元素
std::map<int,int> map;
map.insert(std::pair<int,int>(1,10));
map.erase(1);
7.同样find,count,lower_bound,upper_bound,equal_range的用法与set容器,但是针对的都是键进行查找操作。
8.修改map容器默认的排序规则
class MyCompare{
public:
bool operator()(int v1,intv2){//重载操作符"()"
return v1>v2;
}
}
std::map<int,int,MyCpmpare> map;
map.insert(std::pair<int,int>(1,10));
map.insert(std::pair<int,int>(2,10));
map.insert(std::pair<int,int>(3,10));