一、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)。
新聞熱點
疑難解答