C++ list-map鏈表與映射表的簡(jiǎn)單使用
list 鏈表
鏈表是由節(jié)點(diǎn)之間通過指針連接而成的鏈?zhǔn)浇Y(jié)構(gòu)存儲(chǔ)結(jié)構(gòu)體,對(duì)于鏈表,C++標(biāo)準(zhǔn)庫中已經(jīng)提供了封裝好的鏈表了。
require:
#include <list> ?//1.包含頭文件 using namespace std; ?//2.打開標(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++); //上述情況也可以這么寫
獲取首尾節(jié)點(diǎn)中元素的值
注意:end() 返回的是無效的尾節(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;
//...
}其他常見的函數(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.打開標(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; //如果鍵值存在,則是通過鍵值修改實(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鍵值唯一,可以用來判斷某個(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)文章
C++實(shí)現(xiàn)統(tǒng)計(jì)代碼運(yùn)行時(shí)間計(jì)時(shí)器的簡(jiǎn)單實(shí)例
這篇文章主要介紹了 C++實(shí)現(xiàn)統(tǒng)計(jì)代碼運(yùn)行時(shí)間計(jì)時(shí)器的簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-07-07
深入C/C++浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)方式詳解
本篇文章是對(duì)C/C++浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)方式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C語言數(shù)據(jù)結(jié)構(gòu)之雙鏈表&循環(huán)鏈表&靜態(tài)鏈表詳解
這篇文章主要為大家詳細(xì)介紹了C語言數(shù)據(jù)結(jié)構(gòu)中雙鏈表&循環(huán)鏈表&靜態(tài)鏈表的原理與使用,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-09-09

