91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++ STL入門教程(7) multimap、multiset的使用

發布時間:2020-08-19 22:40:01 來源:腳本之家 閱讀:187 作者:synapse7 欄目:編程語言

一、multimap(一對多索引)

C++ multimap和map所支持的操作相同(除了multimap不支持下標運算),但是multimap允許重復的元素。

C++ STL入門教程(7) multimap、multiset的使用

完整程序代碼:

/*請務必運行以下程序后對照閱讀*/ 
 
///頭文件依舊是map 
#include <map> 
#include <string> 
#include <iostream> 
using namespace std; 
 
int main() 
{ 
  ///1. 初始化 
  multimap<int, string> mapStudent; 
  multimap<int, string>::iterator iter, beg, end; 
   
  ///2. 添加元素 
  ///multimap不支持下標操作 
  mapStudent.insert(pair<int, string>(0, "student_one")); 
  mapStudent.insert(pair<int, string>(0, "student_one_copy"));///一對多 
  mapStudent.insert(pair<int, string>(1, "student_two")); 
  mapStudent.insert(pair<int, string>(5, "Fear Kubrick")); 
  mapStudent.insert(pair<int, string>(2, "Akemi Homura")); 
  mapStudent.insert(pair<int, string>(-1, "Eren Jaeger")); 
  mapStudent.insert(pair<int, string>(99, "lin")); 
  cout << mapStudent.size() << endl; 
  cout << endl; 
   
  ///3. 遍歷 
  for (iter = mapStudent.begin(); iter != mapStudent.end(); iter++) 
    cout << iter->first << " " << iter->second << endl; 
  cout << endl; 
   
  ///4. 單鍵查詢與范圍查詢 
  ///單鍵查詢 
  int count = mapStudent.count(0); 
  iter = mapStudent.find(0); 
  for (int i = 0; i < count; i++, iter++) 
    cout << iter->first << " " << iter->second << endl; 
  cout << endl; 
  ///范圍查詢 
  beg = mapStudent.lower_bound(1);/// >=1 
  end = mapStudent.upper_bound(5);/// <=5 
  for (; beg != end; beg++) 
    cout << beg->first << " " << beg->second << endl; 
  cout << endl; 
   
  ///5. 刪除 
  iter = mapStudent.find(1); 
  mapStudent.erase(iter); 
  cout << mapStudent.size() << endl; 
  for (iter = mapStudent.begin(); iter != mapStudent.end(); iter++) 
    cout << iter->first << " " << iter->second << endl; 
  cout << endl; 
   
  ///6. 判空與清空 
  if (!mapStudent.empty()) 
    mapStudent.clear(); 
} 

二、multiset(多元集合)

多元集合(multiset)和集合(set)所支持的操作相同,只不過支持重復對象。
它是<set>庫中一個非常有用的類型,它可以看成一個序列,插入一個數,刪除一個數都能夠在O(log n)的時間內完成,而且他能時刻保證序列中的數是有序的,而且序列中可以存在重復的數。
PS:與priority_queue(優先隊列)相比,multiset取出任意一個元素要O(log n),但priority_queue要O(n)。(這就是它叫做queue的原因)

C++ STL入門教程(7) multimap、multiset的使用

完整程序代碼:

/*請務必運行以下程序后對照閱讀*/ 
 
///頭文件依舊為set 
#include <set> 
#include <iostream> 
using namespace std; 
 
int main() 
{ 
  ///1. 初始化 
  multiset<int> num; 
  multiset<int>::iterator iter,beg,end; 
  cout << num.max_size() << endl;///multiset容納上限 
  cout << endl; 
 
  ///2. 添加元素 
  for (int i = 0; i < 10; i++) 
    num.insert(i); 
  cout << num.size() << endl; 
  cout << endl; 
 
  ///3. 遍歷 
  for (iter = num.begin(); iter != num.end(); iter++) 
    cout << *iter << " " ; 
  cout << endl; 
  cout << endl; 
 
  ///4. 查詢 
 
  iter = num.find(1); 
  if (iter != num.end()) 
    cout << *iter << endl; 
  else 
    cout << -1 << endl; 
 
  iter = num.find(99); 
  if (iter != num.end()) 
    cout << *iter << endl; 
  else 
    cout << -1 << endl; 
  cout << endl; 
 
  beg=num.lower_bound(2); 
  end=num.upper_bound(7); 
  for (; beg != end; beg++) 
    cout << *beg << " " ; 
  cout << endl; 
 
  ///5. 刪除 
  iter = num.find(1); 
  num.erase(iter); 
  cout << num.size() << endl; 
  for (iter = num.begin(); iter != num.end(); iter++) 
    cout << *iter << " " ; 
  cout << endl; 
  cout << endl; 
 
  ///6. 判空與清空 
  if (!num.empty()) 
    num.clear(); 
} 

參考網址:

http://www.cplusplus.com/reference/map/multimap/

http://www.cplusplus.com/reference/set/multiset/

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新安县| 墨玉县| 芦溪县| 麻阳| 长顺县| 雅安市| 北安市| 塘沽区| 綦江县| 开化县| 鹤庆县| 金溪县| 花莲县| 剑阁县| 永吉县| 汤阴县| 大方县| 雷波县| 昂仁县| 赤城县| 凉城县| 方正县| 乌拉特后旗| 靖州| 曲水县| 澎湖县| 彭阳县| 化德县| 墨玉县| 堆龙德庆县| 兴文县| 吉安县| 黔西| 晴隆县| 黑河市| 交城县| 吴堡县| 宜都市| 水富县| 汉阴县| 张北县|