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