C++ map容器用法

給map容器添加元素可通過兩種方式實現(xiàn):

1.通過insert成員函數(shù)實現(xiàn)。

2.通過下標操作符獲取元素,然后給獲取的元素賦值。 map對象的訪問可通過下標和迭代器兩種方式實現(xiàn):

3.map的下標是鍵,返回的是特定鍵所關(guān)聯(lián)的值。

4.使用迭代器訪問,iter->first指向元素的鍵,iter->second指向鍵對應(yīng)的值。 使用下標訪問map容器與使用下標訪問vector的行為截然不同:用下標訪問map中不存在的元素將導(dǎo)致在map容器中添加一個新的元素,這個元素的鍵即為該下標值,鍵所對應(yīng)的值為空。

————————————————————————————————

map的基本操作函數(shù):

???? C++?maps是一種關(guān)聯(lián)式容器,包含“關(guān)鍵字/值”對

?????begin()?????????返回指向map頭部的迭代器

?????clear()????????刪除所有元素

?????count()?????????返回指定元素出現(xiàn)的次數(shù)

?????empty()?????????如果map為空則返回true

?????end()???????????返回指向map末尾的迭代器

?????equal_range()???返回特殊條目的迭代器對

?????erase()?????????刪除一個元素

?????find()??????????查找一個元素

?????get_allocator()?返回map的配置器

?????insert()????????插入元素

?????key_comp()??????返回比較元素key的函數(shù)

?????lower_bound()???返回鍵值>=給定元素的第一個位置

?????max_size()??????返回可以容納的最大元素個數(shù)

?????rbegin()????????返回一個指向map尾部的逆向迭代器

?????rend()??????????返回一個指向map頭部的逆向迭代器

?????size()??????????返回map中元素的個數(shù)

?????swap()???????????交換兩個map

?????upper_bound()????返回鍵值>給定元素的第一個位置

?????value_comp()?????返回比較元素value的函數(shù)

————————————————————————————————



#include<map>

map<key, value> m;//創(chuàng)建一個名為m的空map對象,其鍵和值的類型分別為key和value。

map<key, value> m(m2);//創(chuàng)建m2的副本m,m與m2必須有相同的鍵類型和值類型。

map<key, value> m(b,e);//創(chuàng)建map類型的對象m,存儲迭代器b和e標記的范圍內(nèi)所有元素的副本,元素的類型必須能轉(zhuǎn)換為pair

//查

m.count(k);// 返回m中鍵值等于k的元素的個數(shù)。

m.find(k);// 如果m中存在按k索引的元素,則返回指向該元素的迭代器。如果不存在,則返回結(jié)束游標end()。

//刪

//迭代器刪除

iter = m.find("123");

m.erase(iter);

//用關(guān)鍵字刪除

int n = m.erase("123"); //如果刪除了會返回1,否則返回0

//用迭代器范圍刪除 : 把整個map清空

m.erase(m.begin(), m.end());

//等同于m.clear()


m.erase(k); // 刪除m中鍵為k的元素,返回size_type類型的值,表示刪除元素的個數(shù)。

m.erase(p);? // 從m中刪除迭代器p所指向的元素,p必須指向m中確實存在的元素,而且不能等于m.end(),返回void類型。

m.erase(iterator first, iterator last);? // 刪除一個范圍,返回void類型。

//插入

// 第一種 用insert函數(shù)插入pair

m.insert(pair<int, string>(000, "student_zero"));

// 第二種 用insert函數(shù)插入value_type數(shù)據(jù)

m.insert(map<int, string>::value_type(001, "student_one"));

// 第三種 用"array"方式插入

m[123] = "student_first";

m[456] = "student_second";


m.insert(e) ;

e是一個用在m上的value_type類型的值。如果鍵e.first不在m中,則插入一個值為e.second的新元素;如果該鍵在m中已存在,那么不進行任何操作。該函數(shù)返回一個pair類型對象,包含指向鍵為e.first的元素的map迭代器,以及一個bool類型的對象,表示是否插入了該元素。

m.insert(beg, end);

beg和end是標記元素范圍的迭代器,對于該范圍內(nèi)的所有元素,如果它的鍵在m中不存在,則將該鍵及其關(guān)聯(lián)的值插入到m。 返回void類型。

m.insert(iter, e);

e是value_type類型的值,如果e.first不在m中,則創(chuàng)建新元素,并以迭代器iter為起點搜索新元素存儲的位置,返回一個迭代器,指向m中具有給定鍵的元素。 在添加新的map元素時,使用insert成員可避免使用下標操作符帶來的副作用:不必要的初始化。


//在往map里面插入了數(shù)據(jù),我們怎么知道當前已經(jīng)插入了多少數(shù)據(jù)呢,可以用size函數(shù),用法如下:

int nSize = mapStudent.size();

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容