我正在寻找一种在C++ 17中遍历map键的方法。我现在想到的方法是基于这个question的答案,方法如下所示。
for (auto const& [i, val] : myMap)
...
字符串
然而,我不需要使用值val
,我只需要值i
。因此,代码...
不包含任何对值val
的调用。因此,每当我编译代码时,都会出现以下警告消息:
warning: unused variable ‘val’ [-Wunused-variable]
for (auto const& [i, val] : myMap){
^
型
我想要的是找到一种方法来遍历(只)Map的键,忽略值。有人知道怎么做吗?
6条答案
按热度按时间9avjhtql1#
两个选项:
1.@π π ντα ε π的answer的范围版本:
字符串
1.使用ranges-v3 library,或C++20中的
std::ranges
,通过将范围myMap.begin()
和myMap.end()
投影到其第一个坐标上来调整范围。然后您可以编写如下内容:型
另请参阅
std::views::keys
。您可以通过创建一个只包含键的新容器来实现这一点,但对于较大的map来说,这可能会很昂贵。(If你有奇怪的,沉重的键,然后
const auto& key
而不是auto key
。fwzugrvs2#
有人知道怎么做吗?
当然!你可以使用传统的
for
循环和迭代器:字符串
kmbjn2e33#
您可以通过强制转换为
void
来避免未使用的警告:字符串
zpgglvta4#
如何在
_
中使用类似 Go 的未使用变量声明:字符串
ct3nt3jp5#
for(auto const & pair:myMap)因为map内部存储的元素是std::pair格式的,所以你可以通过写,pair.first;作为key或pair.second;作为value来访问元素。
2guxujil6#
字符串