首页 > 后端开发 > C++ > 如何有效地将 std::map 中的键或值提取到向量中?

如何有效地将 std::map 中的键或值提取到向量中?

Barbara Streisand
发布: 2024-11-28 06:33:10
原创
766 人浏览过

How to Efficiently Extract Keys or Values from a std::map into a Vector?

将 std::map 中的元素检索到向量中:超越函子

要从 std::map 中提取键或值,可以本能地使用函子,如所提供的代码片段所示:

struct RetrieveKey
{
    template <typename T>
    typename T::first_type operator()(T keyValuePair) const
    {
        return keyValuePair.first;
    }
};

map<int, int> m;
vector<int> keys;
transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey());
登录后复制

虽然这种方法在技术上函数,它会受到代码模糊和与目标的执行距离的影响。

替代方法:迭代器循环

更简单的解决方案涉及对地图迭代器的简单循环:

for (map<int, int>::iterator it = m.begin(); it != m.end(); ++it) {
  keys.push_back(it->first);
}
登录后复制

此方法提供了清晰的可读性和轻松的修改来检索值而不是

Boost 库方法

如果使用 Boost 库,可以使用 BOOST_FOREACH 来获得更大的简单性:

pair<int, int> me; // map element type
vector<int> v;
BOOST_FOREACH(me, m) {
  v.push_back(me.first);
}
登录后复制

此方法提供明确性和简洁性。

总之,虽然函子方法仍然是一个有效的选项,但迭代器循环和 Boost 库方法提供了更简单、更直观的方法来将 std::map 中的元素检索到向量中。

以上是如何有效地将 std::map 中的键或值提取到向量中?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板