这里只讲解简单实用, 至于底层采用红黑树,原理后面讲解
1:map 为什么键是惟一的?
红黑树底层插入元素有两种, map 用的是insert_unique函数。
1>insert_unique()
2> insert_equal()
2:插入元素:
insert()
empalce()//类似于vector 中的push_back emplace_back
insert_or_assign() // c++17 key已经存在,则会覆盖之前的 value
data.insert(make_pair("1","2233"));
data.insert_or_assign("1","22222");
data.emplace("1","www");
3:查找
iterator find( const Key& key );
size_type count( const Key& key ) const
auto iter = data.find("1");
if(iter!= data.end())
{
std::cout<<"find it:"<<iter->second<<std::endl;
}
std::cout<<data.count("1")<<std::endl;
4:合并
template
void merge( std::map<Key, T, C2, Allocator>& source );
std::map<string,string>data;
data.insert(make_pair("1","111"));
data.insert(make_pair("2","2222"));
std::map<string,string>data1;
data1.insert(make_pair("2","2222"));
data1.insert(make_pair("3","3333"));
data.merge(data1);
for(auto pair:data)
{
std::cout<<pair.first<<"\t"<<pair.second<<std::endl;
}
输出:
1 111
2 2222
3 3333
data.size():1