21xrx.com
2024-12-27 20:32:55 Friday
登录
文章检索 我的文章 写文章
C++中如何获取map容器中的key?
2023-07-05 09:52:34 深夜i     --     --
C++ map容器 key 获取

C++中的map容器可用于存储键值对,其中每个键都必须是唯一的。当需要获取map容器中的所有键时,可以使用STL算法或循环遍历map容器。

方法一:使用STL算法

可以使用STL算法中的transform函数将map容器中的键作为输出容器的元素。transform函数需要三个参数,第一个参数是要应用函数的源容器的开始位置,第二个参数是结束位置,第三个参数是输出容器的开始位置。

下面是使用transform函数从map容器中获取键的示例代码:


#include <iostream>

#include <map>

#include <algorithm>

#include <vector>

using namespace std;

int main()

{

  map<int, string> my_map = { "one", "two", "three" };

  vector<int> keys;

  transform(my_map.begin(), my_map.end(), back_inserter(keys),

    [](const pair<int, string>& p) return p.first; );

  for (int key : keys)

    cout << key << endl;

  

  return 0;

}

输出结果:


1

2

3

此代码创建了一个名为“my_map”的map容器,其中键是int类型,值是string类型。使用transform函数将所有键存储在名为“keys”的vector容器中,并使用循环遍历输出所有键。

方法二:使用循环遍历

可以使用一个 range-based for 循环遍历map容器,其中每一项作为 std::pair<const Key, T> 对象返回,可以通过 .first 访问键。

下面是使用range-based for循环从map容器中获取键的示例代码:


#include <iostream>

#include <map>

#include <vector>

using namespace std;

int main()

{

  map<int, string> my_map = { "one", "two", "three" };

  vector<int> keys;

  for (auto const& p : my_map) {

    keys.push_back(p.first);

  }

  for (int key : keys)

    cout << key << endl;

  

  return 0;

}

输出结果:


1

2

3

此代码与上述转换函数示例代码非常相似。在这个例子中,对于容器中的每个键值对,将键压入名为“keys”的vector容器,并使用循环遍历输出所有键。

以上是两种从map容器中获取键的常用方法,开发人员可以根据具体场景选择最适合自己的方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复