首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >迭代C++映射中的键

迭代C++映射中的键
EN

Stack Overflow用户
提问于 2009-09-18 10:45:04
回答 20查看 210.3K关注 0票数 150

有没有一种方法可以遍历键,而不是C++映射的对?

EN

回答 20

Stack Overflow用户

回答已采纳

发布于 2009-09-18 10:53:25

如果您确实需要隐藏“真实”迭代器返回的值(例如,因为您希望将键迭代器与标准算法一起使用,以便它们对键而不是键对进行操作),那么可以看看Boost的transform_iterator

提示:查看新类的Boost文档时,请先阅读末尾的“示例”。然后,您就有机会弄清楚它的其余部分到底在说什么:-)

票数 74
EN

Stack Overflow用户

发布于 2009-09-18 10:47:07

map是关联容器。因此,迭代器是一对密钥val。如果只需要键,可以忽略键对中的值部分。

代码语言:javascript
复制
for(std::map<Key,Val>::iterator iter = myMap.begin(); iter != myMap.end(); ++iter)
{
Key k =  iter->first;
//ignore value
//Value v = iter->second;
}

EDIT::如果您只想向外部公开关键字,那么可以将映射转换为矢量或关键字并公开。

票数 127
EN

Stack Overflow用户

发布于 2014-01-30 00:10:25

使用C++11,迭代语法很简单。您仍然可以遍历对,但只访问键很容易。

代码语言:javascript
复制
#include <iostream>
#include <map>

int main()
{
    std::map<std::string, int> myMap;

    myMap["one"] = 1;
    myMap["two"] = 2;
    myMap["three"] = 3;

    for ( const auto &myPair : myMap ) {
        std::cout << myPair.first << "\n";
    }
}
票数 100
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1443793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档