【发布时间】:2020-04-29 20:27:44
【问题描述】:
我试图在 C++ 中获得与 rust 元组解构相同的行为。 例如:我有一个想要迭代的 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.
}
【问题讨论】:
-
写
.second真的有那么大吗? -
@tadman 在许多其他语言中,您可以迭代键和值,所以在 c++ 中也可以这样做
-
range-v3 有
views::keys和views::values。 -
我明白了,但简短的回答是“处理它”。长的答案是,进行转换以使您的生活更方便是低效的。 C++是用来写快代码的,写代码不一定好玩。其他语言提供了更多便利,例如 Rust,甚至更好的 Ruby,但它们通常以牺牲速度为代价。
标签: c++ loops for-loop unordered-map value-type