C++遍歷map的實(shí)現(xiàn)示例
在C++中, std::map 是一種關(guān)聯(lián)容器,它存儲(chǔ)的是鍵值對(duì)(key-value pairs),并且按鍵的順序進(jìn)行排序。遍歷 std::map 有多種方式,以下是幾種常見的方法:
1. 使用范圍for循環(huán)(C++11及以上)
范圍for循環(huán)(range-based for loop)是C++11引入的一種簡(jiǎn)潔的遍歷容器的方式。
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};
for (const auto& pair : myMap) {
std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
}
return 0;
}
在這個(gè)例子中,pair 是一個(gè)包含鍵和值的 std::pair 對(duì)象,pair.first 是鍵,pair.second 是值。
2. 使用迭代器
迭代器是遍歷STL容器的傳統(tǒng)方式。
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}
return 0;
}
在這個(gè)例子中,it 是一個(gè)迭代器,指向 std::map 中的元素。it->first 和 it->second 分別訪問(wèn)鍵和值。
3. 使用反向迭代器
如果你想要從 std::map 的末尾開始遍歷,可以使用反向迭代器。
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};
for (auto it = myMap.rbegin(); it != myMap.rend(); ++it) {
std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}
return 0;
}
反向迭代器的工作方式與正向迭代器類似,但它們從容器的末尾開始,向前移動(dòng)。
注意事項(xiàng)
- 在遍歷過(guò)程中,不要修改容器的大?。ɡ纾灰迦牖騽h除元素),因?yàn)檫@可能會(huì)導(dǎo)致迭代器失效。
- 如果你只需要遍歷鍵或值,而不是鍵值對(duì),可以使用
std::map::keys()或std::map::values()(C++20及以上)來(lái)獲取鍵或值的視圖,并遍歷它們。然而,請(qǐng)注意這些方法在C++20之前的標(biāo)準(zhǔn)中是不可用的。
選擇哪種遍歷方式取決于你的具體需求和C++標(biāo)準(zhǔn)版本。范圍for循環(huán)通常是最簡(jiǎn)潔和現(xiàn)代的方式,但迭代器提供了更多的靈活性和控制。
到此這篇關(guān)于C++遍歷map的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C++遍歷map內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解C++編程中的重載流插入運(yùn)算符和流提取運(yùn)算符
這篇文章主要介紹了詳解C++編程中的重載流插入運(yùn)算符和流提取運(yùn)算符,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
C語(yǔ)言用遞歸函數(shù)對(duì)素?cái)?shù)進(jìn)行判斷流程
素?cái)?shù)判斷是編程語(yǔ)言學(xué)習(xí)過(guò)程中一個(gè)老生常談的話題,而它的實(shí)現(xiàn)也有多種算法,包括經(jīng)典的試除法(以及試除法的幾種優(yōu)化),進(jìn)階的素?cái)?shù)表篩選法,埃拉托斯特尼篩法和歐拉篩法(以及它們的優(yōu)化)等。對(duì)以上算法感興趣的朋友們,不妨搜索“素?cái)?shù)判斷的N種境界”來(lái)學(xué)習(xí)了解2022-09-09
C++拷貝構(gòu)造函數(shù)和賦值運(yùn)算符重載詳解
拷貝構(gòu)造函數(shù)是特殊的構(gòu)造函數(shù),是用一個(gè)已經(jīng)存在的對(duì)象,賦值拷貝給另一個(gè)新創(chuàng)建的已經(jīng)存在的對(duì)象,這篇文章主要介紹了C++拷貝構(gòu)造函數(shù)和賦值運(yùn)算符重載,需要的朋友可以參考下2024-05-05
學(xué)好C++必須做到的50條 絕對(duì)經(jīng)典!
學(xué)好C++必須做到的50條,絕對(duì)經(jīng)典!想要學(xué)好C++的朋友一定要認(rèn)真閱讀本文,更要做到以下50條2016-09-09
C語(yǔ)言?超詳細(xì)講解算法的時(shí)間復(fù)雜度和空間復(fù)雜度
算法復(fù)雜度分為時(shí)間復(fù)雜度和空間復(fù)雜度。其作用:?時(shí)間復(fù)雜度是度量算法執(zhí)行的時(shí)間長(zhǎng)短;而空間復(fù)雜度是度量算法所需存儲(chǔ)空間的大小2022-03-03
Qt實(shí)現(xiàn)SqlRelationalTable關(guān)聯(lián)表組件
在Qt中我們可以通過(guò)拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹SqlRelationalTable關(guān)聯(lián)表組件的常用方法及靈活運(yùn)用,感興趣的可以了解一下2023-12-12
關(guān)于C++STL string類的介紹及模擬實(shí)現(xiàn)
這篇文章主要介紹了關(guān)于C++STL string類的介紹及模擬實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下面具體的文章內(nèi)容2021-09-09
VC獲取當(dāng)前路徑及程序名的實(shí)現(xiàn)代碼
VC上或取當(dāng)前路徑有多種方法,最常用的是使用 GetCurrentDirectory和GetModuleFileName函數(shù),個(gè)中都有諸多注意事項(xiàng),特別總結(jié)一下2016-11-11

