c++ map

來源:互聯網
上載者:User

標籤:

學習map前, 需掌握pair類型

一.什麼是map              

 map 是鍵-值 對 的集合.  map類型通常可理解為關聯陣列 : 可使用鍵作為下標來擷取一個值, 正如內建數群組類型一樣. 而關聯的本質在於元素的值與某個特定的鍵相關聯, 而並非通過元素在數組中的位置來擷取.


二. map對象的定義

 1)  要包含map標頭檔.   

      #include <map>

 2) 定義map對象時, 必須分別指明鍵和值的類型

    map<string, int> A;

上述語句定義一個名為A的map對象, 鍵為string類型, 關聯的值為int型.

3) map建構函式

   *  map<k, v> m;  建立一個空的map對象, 鍵和值分別為k和v

   *  map<k, v> m (m2) ;  建立m2的副本m, m與 m2必須有相同的鍵值類型

   *  map<k,v> m (b, e ); 建立m, 儲存迭代器 b和e標記 的範圍內的所有元素的副本, 元素類型必須能轉換為 pair<const k, v>

4) 鍵類型的約束

    鍵類型必須定義 < 操作符, 而且該操作符能正確地工作.

    例如

       map< vector<int>::iterator, int > B;  // 正確的定義

       map< list<int>::iterator, int> C; //錯誤的定義, 因為list<int>::iterator 類型不支援<操作符.


三, map類定義的類型

 map<k, v> :: key_type    鍵的類型

 map<k, v> :: mapped_type 鍵所關聯的值的類型

 map<k, v> :: value_type  一個pair類型, 它的first元素具有const map<k,v>::key_type 類型, 而 second 元素則為map<k,v>::mapped_type類型.

例如上面定義了 map<string, int> A 的 value_type 類型為 pair<const string, int> 類型

要謹記 value_type 類型是pair類型.      


四. 給map 添加元素

   有兩種方式:  1. 通過下標操作符   2. insert函數

1) 通過下標操作符

例如,

  map <string, int> word_count;

 word_count ["Anna"] = 1;

上述語句將發生一下事情:

1. 在word_count中 尋找鍵為 Anna的元素, 沒有找到

2. 將一個新的鍵-值對插入word_count中.  它的鍵是const string 類型的對象, 儲存Anna. 而它的值則採用初始化, 本例中初始化為0.

3. 將這個新的鍵-值對插入word_count中.

4. 讀取新插入的元素, 並將它的值賦為1.


用下標訪問不存在的元素時將導致在map中添加一個新的元素, 它的鍵即為下標值.


2) map::insert的使用

m.insert(e)    e必須是value_type類型, 如果e已經存在, 則保持m不變, 返回一個pair類型, 包含指向鍵為e.first的元素的map迭代器, 以及一個bool類型的對象.

m.insert( beg, end )  插入用迭代器 beg到end範圍內的元素

m.insert ( iter, e)


五. 尋找並讀取map中的元素


1. count

  m.count(k)  若找到鍵k,則返回1, 否則返回0.

  

2. find

m.find(k) 若找到k, 則返回指向該元素的迭代器, 否則返回超出末端的迭代器.


六. 從map中刪除元素

m.erase(k)  刪除鍵為k的元素

m.erase(p) 刪除迭代器p指向的元素

m.erase(b,e) 刪除一段範圍內的元素


七. 遍曆

map < string , int >::const_iterator  iter= m.begin();

while (  iter != m.end() )

 ....

}

c++ map

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.