CPP容器-map
map是STL的一种关联式容器,他提供一对一的Hash映射,因此使用中也常常可pair数据结构结合使用,map内部自建一棵红黑树,这棵树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,也基于此,不能直接改变元素的key,因为这会破坏正确次序,要修改元素的key,必须先移除该key的元素,然后插入拥有新的key/value的元素;任何两个元素没有相同的key值https://bl..
map是STL的一种关联式容器,他提供一对一的Hash映射,因此使用中也常常可pair数据结构结合使用,map内部自建一棵红黑树,这棵树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,也基于此,不能直接改变元素的key,因为这会破坏正确次序,要修改元素的key,必须先移除该key的元素,然后插入拥有新的key/value的元素;任何两个元素没有相同的key值
https://blog.csdn.net/u013777351/article/details/48263729
map map1;
map1.~map();
2:插入
2.1
map<int, string> c;
c.insert(pair<int, string>(1, "Hello map"));
2.2
c.insert(map<int, string>::value_type(2, "second test"));
2.3
c[3] = "third test";
3:大小函数
c.size(); // 返回容器的大小
c.empty(); // 判断容器大小是否为零,等同于size() == 0;
c.max_size(); // 返回可容纳的最大元素数量
4:查找
c.count(key); // 返回“键的值等于key”的元素个数
c.find(key); // 返回“键的值等于key”的第一个元素,找不到就返回end()
c.lower_bound(); // 返回“键值为key”的元素的第一个可安插位置,
// 也就是“键值>=key”的第一个元素位置
c.upper_bound(key); // 返回“键值为key”的元素的u自后一个可安插位
// 置,也就是“键值>key”的第一个元素位置
c.equal_range(key); // 返回“键值为key”的元素的第一个可安插位置和最
// 后一个可安插位置,也就是“键值==key”的元素区间
example
#include <iostream>
#include <map>
#include <string>
using namespace std;
map<string, int> test1(map<string, int> a) {
for (map<string, int>::iterator iter = a.begin(); iter != a.end(); iter ++) {
iter->second += 3;
}
return a;
}
int main() {
map<int, string> c;
c.insert(pair<int, string>(1, "Hello map"));
cout << c[1] << endl;
c.insert(map<int, string>::value_type(2, "second test"));
cout << c[2] << endl;
c[3] = "third test";
cout << c[3] << endl;
// 不影响原来关键字对应的值,也不会报错或警告
c.insert(pair<int, string>(1, "Hello map else"));
cout << c[1] << endl;
// 不影响原来关键字对应的值
c.insert(map<int, string>::value_type(2, "second test else"));
cout << c[2] << endl;
// 覆盖了原来关键字为3的值
c[3] = "fourth test";
cout << c[3] << endl;
map<int, string>::reverse_iterator iter;
map<int, string>::iterator it = c.begin();
c[6] = "my test";
cout<<"------"<<endl;
for (iter = c.rbegin(); iter != c.rend(); iter ++) {
cout<<iter->first<<"---"<<iter->second<<endl;
}
cout<<"------"<<endl;
for ( ; it != c.end(); it ++) {
cout<<it->first<<"---"<<it->second<<endl;
}
cout<<"------"<<endl;
int count = c.count(1);
cout<<count<<endl;
map<int, string>::iterator temp = c.find(1);
cout<<temp->first<<"---"<<temp->second<<endl;
cout<<"------"<<endl;
c.insert({11, "abc11"});
c.insert(make_pair(4, "ab4"));
for (iter = c.rbegin(); iter != c.rend(); iter ++) {
cout<<iter->first<<"---"<<iter->second<<endl;
}
}
更多推荐
所有评论(0)