1、map的基本特点:
map是STL的一个容器,和set一样,map也是一种关联式容器。它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,有助于我们处理一对一数据。这里说下map内部数据的组织,map内部是自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。
map与set的区别:
对于map中的每个节点存储的是一对信息,包括一个键和一个值,各个节点之间的键值不能重复。
对于set中的每个节点存储的是一个信息,只有一个键,但是每个键值也是唯一的。set表示的是集合的概念。
2、map基本方法:
#include<map>
#include<string>
#include<iostream>
using namespace std;
struct mycomp {
bool operator () (const int &a, const int &b) {
return a > b;
}
};
int main()
{
//构造函数
/*map(); // 默认构造函数
map(const map& m) // 拷贝构造函数
map(iterator begin, iterator end ); //区间构造函数
map(iterator begin, iterator end, const traits& _compare) //带比较谓词的构造函数
map(iterator begin, iterator end, const traits& _compare, const allocator& all) //带分配器
*/
map<int, string> m1;
//插入方法
m1.insert(pair<int, string>(1, "a"));//方法一:pair
m1.insert(pair<int, string>(1, "A"));//重复,不插入
m1.insert(map<int, string>::value_type(2, "b"));//方法二:map<>::value_type
m1.insert(map<int, string>::value_type(2, "B"));//重复,不插入
m1[3] = "c";//方法三:利用数组插入
m1[3] = "C";//重复,替换
m1.insert(pair<int, string>(4, "f"));
m1.insert(pair<int, string>(5, "e"));
//遍历方法
map<int, string>::iterator it = m1.begin();
for (it; it != m1.end(); it++) {
cout << "key = " << it->first << " ; value = " << it->second << endl;
}
//删除
m1.erase(4);//
map<int, string>::iterator it1 = m1.begin();
map<int, string>::iterator it2 = m1.find(3);
m1.erase(it1, it2);
it = m1.begin();
for (it; it != m1.end(); it++) {
cout << "key = " << it->first << " ; value = " << it->second << endl;
}
//自定义比较函数
map<int, string, mycomp> m2;
m2.insert(pair<int, string>(1, "a"));
m2.insert(pair<int, string>(2, "b"));
m2.insert(pair<int, string>(3, "c"));
m2.insert(pair<int, string>(4, "d"));
m2.insert(pair<int, string>(5, "e"));
m2.insert(pair<int, string>(6, "f"));
it = m2.begin();
for (it; it != m2.end(); it++) {
cout << "key = " << it->first << " ; value = " << it->second << endl;
}
return 0;
}
本文介绍了C++ STL中的map容器基本特点及其使用方法,包括构造函数、插入、遍历和删除等操作,并展示了如何自定义比较函数。
5315

被折叠的 条评论
为什么被折叠?



