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() 返回优先队列是否为空