STL的简单应用(3)

STL的简单应用(3)
map和multimap
所有元素都会根据元素的键值自动排序,map的所有元素都是pair(两个),pair的第一个元素被视为键值,第二个元素为实值。map不允许两个元素有相同的键值(可以有相同的实值),但multimap可以。
map 的键值关系到map的元素的排列规则,任意改变map元素键值将严重破坏map的组织。所以不可以通过map 的迭代器来改变map 的键值。但是可以通过迭代器来修改元素的实值。
头文件: #include
定义:map <data_type1, data_type2> map_name;
如:map <string, int> m;//默认按string由小到大排序
操作:
m.size() 返回容器大小
m.empty() 返回容器是否为空
m.count(key) 返回键值等于key的元素的个数
m.lower_bound(key) 返回键值等于key的元素的第一个可安插的位置
m.upper_bound(key) 返回键值等于key的元素的最后一个可安 插的位置
m.insert(elem) 插入一个元素elem
a)运用value_type插入
map<string, float> m;
m.insert(map<string, float>:: value_type (“Robin”, 22.3));
b) 运用pair<>
m.insert(pair<string, float>(“Robin”, 22.3));
c) 运用make_pair()
m.insert(make_pair(“Robin”, 22.3));
优先队列(priority_queue)
一个拥有权值观念的queue,自动依照元素的权值排列,权值最高排在前面。缺省情况下,priority_queue是利用一个max_heap完成的
头文件: #include (就是队列所以用队列头文件)
定义:priority_queue <data_type> priority_queue_name;
如:priority_queue q;//默认是大顶堆(二叉树,不是由大到小排)
操作:
q.push(elem) 将元素elem置入优先队列
q.top() 返回优先队列的下一个元素
q.pop() 移除一个元素
q.size() 返回队列中元素的个数
q.empty() 返回优先队列是否为空

猜你喜欢

转载自blog.csdn.net/weixin_43244265/article/details/88260914