映射基于自动的循环单元素访问C++

map auto-based loop single element access C++

本文关键字:元素 访问 C++ 单元素 于自动 循环 映射      更新时间:2023-10-16

除了auto循环之外,我还试图理解"理论"

标准::地图

元素C++。我有一个std::mapstd::string作为KEY,vector<std:string>作为VALUE。我可以通过以下方式访问其元素:

for ( auto &element : myMap ) {
    std::cout << element.first << ": " << 't';
    for ( std::string subElement : element.second ) std::cout << subElement << ", ";
  }
}

至于vector<string>元素的循环,我知道我可以输入"auto"而不是"std::string"。但是在这种情况下,地图的等价物是什么?我四处研究和搜索,我在那篇帖子中发现每个地图元素都是作为

地图<K,>::value_type

但是我该怎么写呢?我试过了:

for ( std::map<std::string, vector<std::string>> &pz : myMap ) {
    // print ...
}

和类似的东西,但它们就是不起作用。

std::map::value_type被定义为std::map元素的类型,它是std::pair<const Key, T>(即 std::pair<const std::string, vector<std::string>>这里(。 您应该将其用作

for ( std::map<std::string, vector<std::string>>::value_type &pz : myMap ) {
    //                                          ^^^^^^^^^^^^
    // print ...
}

松元耀已经回答了你的问题。这里需要澄清的一件事是,std::map被定义为

template<
    class Key,
    class T,
    class Compare = std::less<Key>,
    class Allocator = std::allocator<std::pair<const Key, T> >
> class map;

类名应std::map<key type, value type>