0

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

我想要它作为向量的原因是我可以更轻松地根据其索引(容器中的位置)提取数据

4

1 回答 1

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());
于 2012-10-12T14:02:44.390 回答