简介:
map中所有元素都是pair(参考上一篇博客)
pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)
所有元素会根据键值自动排序
本质:
map/multimap属于关联式容器,底层结构是用二叉树实现
优点:
可以根据key值快速找到value值
map/multimap区别:
map不允许容器中有重复key值元素
multimap允许容器中有重复key值元素
1.map构造和赋值
map<T1,T2> mp;
map(const map& m);
m.insert(pair<int,int>(1,10));//将匿名对组放到map中
void printMap(pair<const int,int>& pair1) {
cout << "key:" << pair1.first << "value:" << pair1.second << endl;
}
int main() {
map<int, int> mp;
mp.insert(pair<int,int>(1,20));
mp.insert(pair<int,int>(2,30));
mp.insert(pair<int,int>(4,40));
mp.insert(pair<int,int>(3,30));
for_each(mp.begin(),mp.end(),printMap);//会在insert时候自动按照key排序
return 0;
}
一键多值
multimap<char, NFAState>::iterator iterBeg = this->getTransition().lower_bound(ch);
multimap<char, NFAState>::iterator iterEnd = this->getTransition().upper_bound(ch);
for (; iterBeg != iterEnd; iterBeg++) {
state.push_back(iterBeg->second);
}