如何在 C++ 中對 Map 進行迭代

如何在 C++ 中對 Map 進行迭代

使用 while 迴圈在 std::map 元素上迭代

使用傳統的 for 迴圈在 std::map 元素上迭代

使用基於範圍的 for 迴圈迭代 std::map 元素

使用基於範圍的 for 迴圈迭代 std::map 鍵-值對

本文將解釋如何在 C++ 中使用多種方法對 map 進行迭代。

使用 while 迴圈在 std::map 元素上迭代

首先,我們定義一個臨時對映結構 tempMap,並在其中填充任意的鍵/值對,我們將在 stdout 輸出,以更好地展示建議的解決方案。

#include

#include

using std::cin;

using std::cout;

using std::endl;

using std::map;

using std::string;

int main() {

map tempMap = {{

1,

"Apple",

},

{

2,

"Banana",

},

{

3,

"Mango",

},

{

4,

"Raspberry",

},

{

5,

"Blackberry",

},

{

6,

"Cocoa",

}};

auto iter = tempMap.begin();

while (iter != tempMap.end()) {

cout << "[" << iter->first << "," << iter->second << "]\n";

++iter;

}

cout << endl;

return 0;

}

輸出:

[1,Apple]

[2,Banana]

[3,Mango]

[4,Raspberry]

[5,Blackberry]

[6,Cocoa]

請注意,我們使用 auto 型別指定符來宣告 std::map 迭代器,因為為了可讀性,推薦使用這種方法。它是 map::iterator,可以顯式指定。

使用傳統的 for 迴圈在 std::map 元素上迭代

現在,讓我們用傳統的 for 迭代來實現同樣的迴圈,這可以說是在可讀性上最差的。

#include

#include

using std::cin;

using std::cout;

using std::endl;

using std::map;

using std::string;

int main() {

map tempMap = {{

1,

"Apple",

},

{

2,

"Banana",

},

{

3,

"Mango",

},

{

4,

"Raspberry",

},

{

5,

"Blackberry",

},

{

6,

"Cocoa",

}};

for (auto iter = tempMap.begin(); iter != tempMap.end(); ++iter) {

cout << "[" << iter->first << "," << iter->second << "]\n";

}

cout << endl;

return 0;

}

使用基於範圍的 for 迴圈迭代 std::map 元素

一段時間以來,基於範圍的迴圈一直是 C++ 程式設計師的普遍選擇。如果你的編譯器支援 C++11 版本,那麼你就不用再考慮傳統的繁瑣迴圈了,可以欣賞下面這個例子的優雅。

#include

#include

using std::cin;

using std::cout;

using std::endl;

using std::map;

using std::string;

int main() {

map tempMap = {{

1,

"Apple",

},

{

2,

"Banana",

},

{

3,

"Mango",

},

{

4,

"Raspberry",

},

{

5,

"Blackberry",

},

{

6,

"Cocoa",

}};

for (const auto &item : tempMap) {

cout << "[" << item.first << "," << item.second << "]\n";

}

cout << endl;

return 0;

}

使用基於範圍的 for 迴圈迭代 std::map 鍵-值對

這個版本從 C++17 標準開始定義,以在關聯容器中提供更靈活的迭代。與之前的例子相比,該方法的主要優勢在於方便地訪問 map 結構中的鍵值,這也保證了程式設計師更好的可讀性。

#include

#include

using std::cin;

using std::cout;

using std::endl;

using std::map;

using std::string;

int main() {

map tempMap = {{

1,

"Apple",

},

{

2,

"Banana",

},

{

3,

"Mango",

},

{

4,

"Raspberry",

},

{

5,

"Blackberry",

},

{

6,

"Cocoa",

}};

for (const auto& [key, value] : tempMap) {

cout << "[" << key << "," << value << "]\n";

}

cout << endl;

return 0;

}

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe

相关推荐

热血战歌折扣平台有哪些 怎么找到充值渠道
bet28365365游戏

热血战歌折扣平台有哪些 怎么找到充值渠道

📅 10-21 👍 811
泰国这奇葩的水果,果实硕大甜中带酸,隔壁王爷爷活96岁都没见过
如何判断猫咪是否健康?18个日常细节可以看出。
智能门锁出现七种常见异常提示现象,一定要注意!
扫地机器人可以用多久
bet28365365游戏

扫地机器人可以用多久

📅 10-06 👍 309
散财的解释及意思
bet28365365游戏

散财的解释及意思

📅 08-26 👍 657