如何使用基於範圍的“for”循環遍歷不同類型的地圖集合?

洛克14

我可以按如下方式遍歷地圖:

std::map<int, std::string> intMap = { {1, "one"}, {2, "two"}, {3, "three"} };

for (const auto &[k, v]: intMap)
{
    doSomething(k, v);
}

我有另一個地圖(不同類型和大小)定義如下:

std::map<float, std::string> floatMap = { {1.0, "one"}, {2.0, "two"}};

我也想為這張地圖做同樣的事情(doSomething(k, v)模板化)

for (const auto &[k, v]: floatMap)
{
    doSomething(k, v);
}

有沒有辦法通過遍歷地圖集合來為這兩個地圖執行此操作?

就像是:

for (const auto &map: {intMap, floatMap})
{
    for (const auto &[k, v]: map)
    {
        doSomething(k, v);
    }
}

然而,這給出了錯誤:

無法在基於範圍的“for”循環中推斷範圍類型

使用基於範圍的“for”循環遍歷(不同類型的)映射集合的最簡潔方法(> C++17)是什麼?

謝謝!

康桓瑋

您可以使用 fold 表達式來擴展立即調用的 lambda 來執行此操作:

[](const auto&... maps) {
  ([&] {
    for (const auto& [k, v] : maps)
      doSomething(k, v);
   }(), ...);
}(intMap, floatMap);

演示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何循環遍歷具有不同數據類型的集合/映射數組

使用基於範圍的 for 循環迭代地圖的值

使用for循環遍歷地圖不起作用

如何循環遍歷列並根據每列的指定範圍隱藏它們?

循環遍歷列表以獲取python中給定範圍的最大總和

有效地循環遍歷地圖列表

如何使用while循環遍歷輸入?

在 SwiftUI 中循環遍歷實體數組以基於數組數據中的值構建樹結構視圖

如何在 Kotlin 的循環中逐步遍歷固定範圍,其中每次迭代的步長值都會發生變化

如果滿足特定條件,則循環遍歷範圍並刪除行

Javascript - 如何在 React 中一遍又一遍地循環遍歷數組

Android 循環遍歷嵌套的哈希圖

循環遍歷 Python 類中的函數

使用基於範圍的 for 循環添加數組中的所有元素時出現問題

Flutter 循環遍歷對象(基礎)

如何在 Java 中的一個循環中遍歷 2 個不同的數組

無法在基於範圍的循環中修改引用的值

C++ 為什麼這在正常的 for 循環中工作而不是在基於範圍的 for 循環中工作?

為什麼這在正常的 for 循環中工作而不是在基於範圍的 for 循環中工作?

如何在循環中使用範圍:Python

如何循環遍歷 csv 文件中的特定 ID?

如何循環遍歷 Word JS API 中的 RangeCollection?

java使用JSONObject循環遍歷任何jsondata

使用 goroutines 無限循環遍歷文件

使用 Python 和 Pandas 循環遍歷列

使用條件 Javascript 循環遍歷 arrayObjects

使用 FOR 循環遍歷 JSON 對象

關於 double for 循環和範圍的問題

循環遍歷數據范圍以從 API 下載數據

TOP 榜单

热门标签

归档