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

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

Barbara Streisand
Barbara Streisand原创
2024-11-28 06:33:10813浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn