0

multimapequal_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 に答える