C++ map用法
map是STL的一个关联容器,它提供一对一(其中关键字只能在map中出现一次)的数据处理能力。
- 必须引入
#include<map>
-
map的定义
map<type1name, type2name> maps;//第一个是键的类型,第二个是值的类型
map<string, int> maps; //也可以这样,需要C++11及以后支持 ::map<int, string> maps = { {2323, "sdff"}, {23322, "sdfsf2"}, {23211, "sdfsf"} };
-
map容器内元素的访问
-
通过下标进行访问
如: maps["c"] = 4;
-
通过迭代器进行访问
map可以使用it->first来访问键,使用it->second访问值
#include <iostream> #include<map> #include<string> using namespace std; int main() { ::map<char, int> maps; maps['d'] = 10; maps['e'] = 20; maps['a'] = 30; maps['b'] = 40; for (auto it = maps.begin(); it != maps.end(); it++) { cout << it->first << ":" << it->second << endl; } int c = ::getchar(); }
-
-
map的常用用法
-
maps.insert()插入
#include <iostream> #include<map> #include<string> using namespace std; int main() { // 定义一个map对象 ::map<int, string> maps; // 用insert函数插入pair maps.insert(::make_pair<int, string>(11, "sdf")); auto res = maps.insert(std::make_pair<int, string>(2323, "sdfs")); if (res.second) //插入成功 { } // 用insert函数插入value_type数据 maps.insert(::map<int, string>::value_type(22, "sdf3")); maps[123] = "sdfsfsdf"; maps[33] = "测试"; for (auto it = maps.begin(); it != maps.end(); it++) { cout << it->first << ":" << it->second << endl; } int c = ::getchar(); }
-
maps.find()查找一个元素
#include <iostream> #include<map> #include<string> using namespace std; int main() { // 定义一个map对象 ::map<int, string> maps; // 用insert函数插入pair maps.insert(::make_pair<int, string>(11, "sdf")); // 用insert函数插入value_type数据 maps.insert(::map<int, string>::value_type(22, "sdf3")); maps[123] = "sdfsfsdf"; maps[33] = "测试"; auto f = maps.find(123); if (f != maps.end()) //如果不等于end(),则表示找到了 { cout << f->first << ":" << f->second << endl; } int c = ::getchar(); }
-
maps.clear()清空
-
maps.erase()删除一个元素
//迭代器删除 auto it = maps.find(123); if (it != maps.end()) { maps.erase(it); } //关键字删除 int n = maps.erase(123); //如果删除了返回1,否则返回0 // 用迭代器范围删除 maps.erase(maps.begin(), maps.end());
-
maps.size()长度
-
maps.begin()返回指向map头部的迭代器
-
maps.end()返回指向map末尾的迭代器
-
maps.rbegin()返回指向map尾部的逆向迭代器
-
maps.rend()返回指向map头部的逆向迭代器
-
maps.empty()判断是否为空
-
maps.swap()交换两个map
-