映射基于自动的循环单元素访问 C++
map auto-based loop single element access C++
除了 auto
循环
之外,我正在尝试理解 "theory"
std::map
C++ 中的元素。
我有一个 std::map
,其中 std::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"。但是在这种情况下地图的等价物是什么?我四处研究和搜索,发现在 that post 中每个地图元素都作为
访问
map< K, V>::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 ...
}
songyuanyao 已经回答了你的问题。
这里需要澄清的一件事是 std::map
被定义为
template<
class Key,
class T,
class Compare = std::less<Key>,
class Allocator = std::allocator<std::pair<const Key, T> >
> class map;
class 名称应为 std::map<key type, value type>
。
除了 auto
循环
std::map
C++ 中的元素。
我有一个 std::map
,其中 std::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"。但是在这种情况下地图的等价物是什么?我四处研究和搜索,发现在 that post 中每个地图元素都作为
map< K, V>::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 ...
}
songyuanyao 已经回答了你的问题。
这里需要澄清的一件事是 std::map
被定义为
template<
class Key,
class T,
class Compare = std::less<Key>,
class Allocator = std::allocator<std::pair<const Key, T> >
> class map;
class 名称应为 std::map<key type, value type>
。