C++ list-map鏈表與映射表的簡(jiǎn)單使用
list 鏈表
鏈表是由節(jié)點(diǎn)之間通過(guò)指針連接而成的鏈?zhǔn)浇Y(jié)構(gòu)存儲(chǔ)結(jié)構(gòu)體,對(duì)于鏈表,C++標(biāo)準(zhǔn)庫(kù)中已經(jīng)提供了封裝好的鏈表了。
require:
#include <list> ?//1.包含頭文件 using namespace std; ?//2.打開(kāi)標(biāo)準(zhǔn)命名空間
定義鏈表,并在首、尾添加、刪除元素
list<int> lst; ?//定義鏈表對(duì)象,list后<>中指定節(jié)點(diǎn)元素類型 lst.push_front(0); ?//鏈表頭添加 lst.push_back(1); ? //鏈表尾添加 lst.pop_front(); ?//刪除頭節(jié)點(diǎn) lst.pop_back(); ? //刪除尾節(jié)點(diǎn)
迭代器遍歷鏈表
//begin() : 返回頭節(jié)點(diǎn) //end() : 返回?zé)o效的尾節(jié)點(diǎn) list<int>::iterator ite = lst.begin(); //定義迭代器指向頭節(jié)點(diǎn) while(ite != lst.end()) { //不等于鏈表的尾節(jié)點(diǎn) cout << *ite << " "; //operator* ite++; //operator++ }
任意位置插入或刪除
//insert() erase() ite2 = lst.insert(ite1, value); //在 ite1 指向的位置之前插入元素value,返回插入元素的迭代器 ite2 = lst.erase(ite1); //刪除 ite1 指向的節(jié)點(diǎn),ite1 將失效不可用,返回刪除節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn) ite = lst.erase(ite); //多數(shù)情況下,用于刪除的迭代器也可以承接其返回值,自帶++效果 lst.erase(ite++); //上述情況也可以這么寫(xiě)
獲取首尾節(jié)點(diǎn)中元素的值
注意:end() 返回的是無(wú)效的尾節(jié)點(diǎn),不能對(duì)其進(jìn)行間接引用
lst.front(); //*lst.begin(); lst.back(); //*(--lst.end());
使用增強(qiáng)的范圍for循環(huán)進(jìn)行遍歷鏈表
for (int v : lst) { cout << v << " "; }
加引用可以修改節(jié)點(diǎn)里的值
for (int &v : lst) { //... v=value; //... }
其他常見(jiàn)的函數(shù)
lst.empty(); //判斷當(dāng)前鏈表是否為空(bool類型),空返回true,非空返回false lst.size(); //獲取鏈表的長(zhǎng)度(有效節(jié)點(diǎn)數(shù)量) lst.clear(); //清空鏈表,empty 為 ture,size 為 0
map 映射表
map 為映射表,每一個(gè)元素稱之為鍵值對(duì)(pair),分為鍵值(key)和實(shí)值(value),鍵值是唯一的(不能重復(fù)),所有元素都會(huì)根據(jù)元素的鍵值自動(dòng)被排序。
require:
#include <map> ?//1.包含頭文件 using namespace std; ?//2.打開(kāi)標(biāo)準(zhǔn)命名空間
定義map
//格式:map<key,value> mm; map<char, int> mm;
添加
//格式:mm[key] = value; mm['B'] = 1; //使用[]添加元素 mm['D'] = 2; mm['A'] = 3; mm['C'] = 4;
使用函數(shù)插入元素
mm.insert(pair<char, int>('E', 5));
迭代器遍歷map
map中的元素會(huì)自動(dòng)按照鍵值進(jìn)行排序
map<char, int>::iterator ite = mm.begin(); while (ite != mm.end()) { //first : 取鍵值,后面不要加(),second : 實(shí)值 cout << ite->first << "-" << ite->second << " "; ite++; } cout << endl;
修改
當(dāng)鍵值已經(jīng)存在時(shí),會(huì)直接修改實(shí)值
mm['B'] = 50; //如果鍵值存在,則是通過(guò)鍵值修改實(shí)值
刪除
例:刪除第二個(gè)元素
ite = ++mm.begin(); ite = mm.erase(ite); //刪除 , 參數(shù)迭代器默認(rèn)會(huì)失效,所以一般情況下返回值會(huì)接一下,返回的是刪除的下一個(gè)
使用增強(qiáng)的范圍for循環(huán)遍歷
for (pair<char,int> pr : mm) { cout << pr.first << "-" << pr.second << " "; } cout << endl;
使用引用,也可以修改實(shí)值
count統(tǒng)計(jì)
統(tǒng)計(jì)某個(gè)鍵值出現(xiàn)的次數(shù),map鍵值唯一,可以用來(lái)判斷某個(gè)鍵值是否存在
int count = mm.count('B'); //按照鍵值統(tǒng)計(jì),可用于判斷鍵值是否存在 cout << count << endl;
到此這篇關(guān)于C++ list-map鏈表與映射表的簡(jiǎn)單使用的文章就介紹到這了,更多相關(guān)C++ list-map鏈表與映射表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Qt實(shí)現(xiàn)可拖動(dòng)自定義控件
這篇文章主要為大家詳細(xì)介紹了如何基于Qt實(shí)現(xiàn)可拖動(dòng)自定義控件,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下2023-04-04C++面試題之進(jìn)制轉(zhuǎn)換的實(shí)例
這篇文章主要介紹了C++面試題之進(jìn)制轉(zhuǎn)換的實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這樣的知識(shí),需要的朋友可以參考下2017-10-10visual studio code 配置C++開(kāi)發(fā)環(huán)境的教程詳解 (windows 開(kāi)發(fā)環(huán)境)
這篇文章主要介紹了 windows 開(kāi)發(fā)環(huán)境下visual studio code 配置C++開(kāi)發(fā)環(huán)境的圖文教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03