pair 和map對象的使用


pair對象:

pair 對象是記錄一對值得容器,只能記錄一對值。這對值得類型使用泛型的方式。如下:

 1 // ConsoleApplication32.cpp : 定義控制台應用程序的入口點。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include <utility>
 6 #include <iostream>
 7 #include <string>
 8 
 9 using namespace std;
10 
11 int main1()
12 {
13     pair<string, string> anon;
14     anon = make_pair("key001","value001");
15     cout << anon.first << endl;
16     cout << anon.second << endl;
17     anon = make_pair("key002", "value002");
18     cout << anon.first << endl;
19     cout << anon.second << endl;
20     anon.first = "key003";
21     anon.second = "value003";
22     cout << anon.first << endl;
23     cout << anon.second << endl;
24     system("PAUSE");
25     return 0;
26 }
View Code

 

首先使用pair來定義一個對象。要使用pair,需要添加一個頭文件:#include <utility>

其次,使用make_pair方法,來添加一對元素。這個對象的first和second 分別指向key,value。

每一次調用make_pair方法,之前的key-value就沒有了。

map對象:

map對象才是真正記錄key-value對的容器。和java語言里面的map對象也比較類似。

 1 #include "stdafx.h"
 2 #include <map>
 3 #include <iostream>
 4 #include <string>
 5 #include <list>
 6 
 7 
 8 using namespace std;
 9 
10 int main()
11 {
12     map<string, string> map1;
13     map1["key001"] = "value001";
14     cout << map1["key001"] << endl;
15     map1.insert(map<string,string>::value_type("key002","value002"));
16     cout << map1["key002"] << endl;
17 
18     map1.insert(make_pair("key003","value003"));
19     cout << map1["key003"] << endl;
20 
21     pair<map<string, string>::iterator, bool> ret = map1.insert(make_pair("key004","value004"));
22     cout << ret.first->second << endl;
23 
24     int count = map1.erase("key004");
25     cout << count << endl;
26     cout << "begin to print:" << endl;
27     map<string, string>::iterator begin = map1.begin();
28     while (begin != map1.end())
29     {
30         cout << begin->first << endl;
31         ++begin;
32     }
33     system("PAUSE");
34     return 0;
35 } 
View Code

 

這里有幾點:

  1. 頭文件必須包含:#include <map>
  2. 使用下標操作時,如果key值不存在,則會自動創建這樣一個key值並添加到map對象中,且值為空。
  3. 可以使用iterator對象來遍歷map。
  4. insert 函數插入的是pair對象。換句話說,可以理解為map對象為N個pair對象的集合。

set 對象:

set對象是單個鍵值的集合。不能重復。

 1 #include "stdafx.h"
 2 #include <set>
 3 #include <iostream>
 4 #include <string>
 5 
 6 
 7 using namespace std;
 8 
 9 int main()
10 {
11     set<string> set1;
12     set1.insert("001");
13     set1.insert("002");
14     set<string>::iterator ite = set1.find("001");
15     cout << *ite << endl;
16 
17     set<string>::iterator begin = set1.begin();
18     while (begin != set1.end())
19     {
20         cout << *begin << endl;
21         ++begin;
22     }
23     system("pause");
24     return 0;
25 }
View Code

 

要點如下:

  1. 頭文件必須包含:#include <set>
  2. 使用find操作時,返回迭代器。
  3. 可以使用Iterator來遍歷set。
  4. insert操作可以直接插入元素。
  5. 不支持下標操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM