multimapequal_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());