如何从多图的子集创建对矢量?

时间:2012-10-12 14:01:12

标签: c++ vector iterator multimap

我有一对从multimap equal_range调用返回的迭代器。我希望使用它们以对的向量形式创建子集。这可以优雅地完成吗?

我希望它作为矢量的原因是我可以更容易地根据其索引(容器中的位置)提取数据

1 个答案:

答案 0 :(得分:6)

使用std::vector

的迭代器范围构造函数
auto p = mul_map.equal_range(...);
std::vector<mul_map_type::value_type> v(p.first, p.second);

为了提高效率,可能只需要在向量中存储指针或迭代器,这可以通过Boost.Range轻松实现:

#include <boost/range/counting_range.hpp>

auto p = mul_map.equal_range(...);
auto iters = boost::counting_range(p.first, p.second);
std::vector<mul_map_type::(const_)iterator> v(iters.begin(), iters.end());