0
我有一對從multimap equal_range調用返回的迭代器。我希望使用這些來創建一個子對象形式的子集。這可以做得高雅嗎?如何從多映射的子集中創建對的向量?
我想它作爲一個矢量是這樣我就可以根據它的索引(在容器中的位置)
我有一對從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());
使用C++ 11的'auto'只是爲了簡潔這裏,你總是可以輸入類型。 :) – Xeo