我试图在 C++ 中获得与 rust tuple 解构相同的行为。
例如:我有一个想要迭代的 unordered_map。但是,我关心的唯一数据是值,而不是键。
有没有办法在不使用以下语法的情况下使用 for 循环迭代它? (这是我现在所拥有的)
for (auto &pair : _map)
{
std::cout << pair.second << std::endl;
}
我想得到这样的东西:for (auto &value : _map)
{
std::cout << value << std::endl; // This would give me the value and not a pair with key and value.
}
最佳答案
使用 range-v3 库,您可以迭代键:
for (auto key : m | views::keys)
// use key
或超过值:
for (auto value : m | views::values)
// use value
哪里
m
可以是 map
.在 c++17 中,你可以这样做:
for ([[maybe_unused]] auto [key, value] : m)
// use key or value
注意属性
[[maybe_unused]]
用于抑制有关不使用其中一个变量的警告。
关于c++ - 在 c++ 中的 unordered_map 中仅访问一对元素中的一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61511065/