C++ 基礎(chǔ)教程

C++ 流程控制

C++ 函數(shù)

C++ 數(shù)組 & 字符串

C++ 數(shù)據(jù)結(jié)構(gòu)

C++ 類 & 對象

C++ 指針

C++ 繼承

C++ STL 教程

C++ 參考手冊

C++ map 使用方法及示例

map是 C ++ STL(標(biāo)準(zhǔn)模板庫)的一部分。map是存儲排序的鍵值對的關(guān)聯(lián)容器,其中每個鍵都是唯一的,可以插入或刪除,但不能更改。但是與鍵關(guān)聯(lián)的值可以更改。

例如:一個員工map容器,其中員工ID是鍵,姓名是值,則可以表示為:

101Nikita
102Robin
103Deep
104John

語法

template < class Key,                     //map::key_type
           class T,                 //map::mapped_type
           class Compare = less,         //map::key_compare
           class Alloc = allocator<pair>    //map::allocator_type
           > class map;

參數(shù)

key:要存儲在map中的鍵的數(shù)據(jù)類型。

type:要存儲在map中的值的數(shù)據(jù)類型。

compare:一個比較類,它接受兩個bool類型相同的參數(shù),并返回一個值。此參數(shù)是可選的,二進(jìn)制謂詞less <“ key”>是默認(rèn)值。

alloc:分配器對象的類型。此參數(shù)是可選的,默認(rèn)值為分配器。

創(chuàng)建 map

使用以下語句可以輕松創(chuàng)建map:

typedef pair<const Key, T> value_type;

上面的語句將用于創(chuàng)建一個鍵類型為Key類型,value值類型為 value_type的map重要的一點(diǎn)是,map的鍵和相應(yīng)的值始終成對插入,您不能在map中僅插入鍵或僅插入值。

實(shí)例1

#include <string.h>  
#include <iostream>  
#include <map>  
#include <utility>  
using namespace std;  
int main()
{
   mapEmployees;
   // 1) 使用數(shù)組索引符號進(jìn)行賦值
   Employees[101] = "Nikita";
   Employees[105] = "John";
   Employees[103] = "Dolly";
   Employees[104] = "Deep";
   Employees[102] = "Aman";
   cout << "Employees[104]=" << Employees[104] << endl << endl;
   cout << "Map 大小: " << Employees.size() << endl;
   cout << endl << "自然順序:" << endl;
   for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii)
   {
       cout << (*ii).first << ": " << (*ii).second << endl;
   }
   cout << endl << "相反順序:" << endl;
   for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii)
   {
       cout << (*ii).first << ": " << (*ii).second << endl;
   }
}

輸出:

Employees[104]=Deep

Map 大小: 5

自然順序:
101: Nikita
102: Aman
103: Dolly
104: Deep
105: John

相反順序:
105: John
104: Deep
103: Dolly
102: Aman
101: Nikita

成員函數(shù)

以下是map的所有成員函數(shù)的列表:

構(gòu)造函數(shù)/析構(gòu)函數(shù)

函數(shù)描述
constructors構(gòu)造map
destructorsmap析構(gòu)函數(shù)
operator=將map元素復(fù)制到另一個map容器。

迭代器

函數(shù)描述
begin返回指向map中第一個元素的迭代器。
cbegin返回指向map中第一個元素的const迭代器。
end返回指向末尾的迭代器。
cend返回指向末尾的常量迭代器。
rbegin返回指向末尾的反向迭代器。
rend返回指向起點(diǎn)的反向迭代器。
crbegin返回指向末尾的常量反向迭代器。
crend返回指向起點(diǎn)的常量反向迭代器。

容量

函數(shù)描述
empty如果map為空,則返回true。
size返回map中的元素數(shù)。
max_size返回map的最大容量。

元素訪問

函數(shù)描述
operator[]用給定的鍵檢索元素。
at用給定的鍵檢索元素。

修飾符

函數(shù)描述
insert在map中插入元素。
erase從map上擦除元素。
swap交換map內(nèi)容。
clear刪除map的所有元素。
emplace構(gòu)造新元素并將其插入map。
emplace_hint通過提示構(gòu)造新元素并將其插入map。

觀測器

函數(shù)描述
key_comp返回鍵比較對象的副本。
value_comp返回值比較對象的副本。

操作方式

函數(shù)描述
find搜索具有給定鍵的元素。
count獲取與給定鍵匹配的元素數(shù)。
lower_bound返回迭代器的下限。
upper_bound返回一個迭代器到上限。
equal_range返回與給定鍵匹配的元素范圍。

分配器

函數(shù)描述
get_allocator返回用于構(gòu)造map的分配器對象。

非成員重載函數(shù)

函數(shù)描述
operator==檢查兩個map是否相等。
operator!=檢查兩個map是否相等。
operator<檢查第一個map是否小于其他map。
operator<=檢查第一個map是否小于或等于其他map。
operator>檢查第一個map是否大于其他map。
operator>=檢查第一個map是否大于其他map。
swap()交換兩個map的元素。
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清