有序关联容器:基于一个序标准(默认是<)进行查找。这类容器用平衡二叉树实现,通常是红黑树。
无需关联容器:基于一个哈希函数进行查找。这类容器用哈希表实现,采用溢出链表策略。
两类容器都支持:
map {键,值}
set 不带值的map,或者说关键字就是值。
初始化:
map<string,pair<Coordinate,Coordinate>> locations
{
{"Copenhagen",{"55:40N","12:34E"}},
{"Rome",{"41:54N","12:30E"}}
};
基本操作:
v = c[k]
v = c.at(k)
p = c.find(k)
p = c.lower_bound(k)
p = c.upper_bound(k)
pair(p1,p2) == c.equal_range(k)
map<string,string> dictionary;
dictionary["sea"] = "large body of water"; //insert
atuo q = dictionary.find("seal");
if(q==dictionary.end()){
cout << "entry not found";
dictionary.emplace("seal","eats fish");
}
else
cout q->second;
set
以结构体为参数
struct Record{
string label;
int value;
};
bool operator < (const Record& a, const Record& b){
return a.label < b.label;
}
set<Record> mr {{"duck",10},{"pork",12}};