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