2017-07-02 22 views
0

std::vector<std::pair<const K, V>*>std::vector<std::pair<const K, V>>に変換したいと思います。しかし、あなたはpair<const K, V>のため知っているように私は割り当てることができません。std :: vector <std :: pair <const K, V> *> to std :: vector <std :: pair <const K, V>>

私はこれを実現するために

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

を活用する何らかの方法があることができますね。しかし、私は道を見つけることができません。

アドバイスを探してください。ありがとう!!

+4

https://stackoverflow.com/questions/6954906/does-c11-allow-vectorconst-t –

+0

は、質問を改訂しました。 std :: vector >は私のコンパイラが文句を言っていないので正当なものでなければなりません。 –

答えて

0

constは、要素を割り当てたり、insertなどの特定の関数を呼び出すときにのみ問題になります。しかし、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; 
} 
関連する問題