c++ - 在 c++ 中的 unordered_map 中仅访问一对元素中的一个元素

标签 c++ loops for-loop unordered-map value-type

我试图在 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/

相关文章:

c++ - 用户验证循环 'hangs'

loops - 在 Ansible 中迭代嵌套字典,保留键名称

php - 循环中的复选框 - PHP

python - 使用循环将值添加到字典键

javascript - 不同javascript for循环的性能

python - 如何在 Python 中创建返回此列表的所有组合的函数?

c++ - pthread sleep() 函数停止整个执行

c++ - 如何从返回指向父对象的指针的方法中获取指向子对象的指针

c++ - 传递从 istreambuf_iterator 构造的 std::vector<char>

Javascript for循环返回 "null"而不是我的值