国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

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

2020-01-26 13:57:23
字體:
供稿:網(wǎng)友

一、multimap(一對多索引)

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

完整程序代碼:

/*請務(wù)必運(yùn)行以下程序后對照閱讀*/  ///頭文件依舊是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不支持下標(biāo)操作   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)所支持的操作相同,只不過支持重復(fù)對象。
它是<set>庫中一個非常有用的類型,它可以看成一個序列,插入一個數(shù),刪除一個數(shù)都能夠在O(log n)的時間內(nèi)完成,而且他能時刻保證序列中的數(shù)是有序的,而且序列中可以存在重復(fù)的數(shù)。
PS:與priority_queue(優(yōu)先隊列)相比,multiset取出任意一個元素要O(log n),但priority_queue要O(n)。(這就是它叫做queue的原因)

完整程序代碼:

/*請務(wù)必運(yùn)行以下程序后對照閱讀*/  ///頭文件依舊為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(); } 

參考網(wǎng)址:

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 巫山县| 沅陵县| 隆安县| 东光县| 敦煌市| 荆州市| 金寨县| 内丘县| 自贡市| 庄浪县| 白山市| 溧水县| 望江县| 美姑县| 揭阳市| 丹棱县| 宜宾市| 怀宁县| 陕西省| 普格县| 武威市| 南江县| 呼伦贝尔市| 将乐县| 繁峙县| 庆阳市| 屏边| 蒙阴县| 东方市| 博客| 威海市| 大冶市| 屏山县| 金溪县| 民县| 宁城县| 上思县| 济南市| 宜城市| 仁化县| 湄潭县|