我有一对从multimap equal_range调用返回的迭代器。我希望使用它们以对的向量形式创建子集。这可以优雅地完成吗?
我希望它作为矢量的原因是我可以更容易地根据其索引(容器中的位置)提取数据
答案 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());