我有一对从 multimap equal_range 调用返回的迭代器。我希望使用这些以成对向量的形式创建一个子集。请问这可以优雅地完成吗?
我想要它作为向量的原因是我可以更轻松地根据其索引(容器中的位置)提取数据
使用迭代器范围构造函数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());