链接:?C++中的std::map容器
链接是概念介绍和简单用法笔记,下面是一个比较全的代码。
#include <iostream>
#include <string>
#include <map>
using namespace std;
void fun_map()
{
std::map<std::string,int> map_data1 = {
{"000",0},
{"aaa",0},
{"bbb",0}
};
map_data1.at("aaa") = 1;
map_data1.at("bbb") = 2;
// map_data1.at("zzz") = 2; //error 初始化中没有的不可用at赋值
map_data1["ccc"] = 3;
map_data1["ddd"] = 4;
map_data1.insert(std::pair<std::string,int>("zzz",5));
map_data1.insert(std::pair<std::string,int>("fff",6));
for(auto& data: map_data1){
std::cout << data.first << " is: " << data.second << std::endl;
}
// 打印结果
// 000 is: 0
// aaa is: 1
// bbb is: 2
// ccc is: 3
// ddd is: 4
// fff is: 6 //注意:这里打印与插入顺序不一致,因为map是自动排序的
// zzz is: 5
std::cout << "[iterator output] ";
//for(std::map<std::string,int>::iterator it = map_data1.begin();it != map_data1.end();++it){
for(auto it = map_data1.begin();it != map_data1.end();++it){
std::cout << it->first << " is: " << it->second << " ";
}
std::cout << '\n' << std::endl;
// 打印结果
// [iterator output] 000 is: 0 aaa is: 1 bbb is: 2 ccc is: 3 ddd is: 4 fff is: 6 zzz is: 5
std::cout << "size: " << map_data1.size() << " empty[true or flase]: " << map_data1.empty() ;
map_data1.clear();
std::cout << " => clear() => size: " << map_data1.size() << " empty[true or flase]: " << map_data1.empty() << std::endl;
// 打印结果
// size: 7 empty[true or flase]: 0 => clear() => size: 0 empty[true or flase]: 1
map_data1["AA"] = 11;
map_data1["BB"] = 22;
map_data1["CC"] = 33;
map_data1["DD"] = 44;
for(auto& data: map_data1){
std::cout << data.first << " is: " << data.second << " " << std::endl;
}
// 打印结果
// AA is: 11
// BB is: 22
// CC is: 33
// DD is: 44
auto it = map_data1.find("BB");
if (it != map_data1.end()){
map_data1.erase(it);
}else{
std::cout << "没有找到" << std::endl;
}
// map_data1.erase(map_data1.begin(),map_data1.end()); //删除所有;等同于clear()
map_data1.erase("DD");
for(auto& data: map_data1){
std::cout << data.first << " is: " << data.second << " ";
}
std::cout << '\n' << std::endl;
// 打印结果
// AA is: 11 CC is: 33
}
|