转换std :: vector <std :: pair <const k,=“”v =“”> *&gt; to std :: vector <std :: pair <const k,=“”v =“”>&gt;

时间:2017-07-02 20:41:40

标签: c++ c++11 vector stl

我想将std::vector<std::pair<const K, V>*>转换为std::vector<std::pair<const K, V>>。但是,正如您所知,由于pair<const K, V>我无法分配。

我想可以在某种程度上利用

template< class InputIt >
void assign( InputIt first, InputIt last );

实现这一目标。但是,我找不到出路。

寻求建议。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您尝试分配元素或调用insert等特定功能,则const只是一个问题。但push_backemplace_back会没问题。

一个解决方案:

template <typename Elem>
std::vector<Elem> deref_vec_elems( const std::vector<Elem*>& v ) {
    std::vector<Elem> v2;
    for ( Elem* e : v )
        v2.push_back( *e );
    return v2;
}