2017-07-02 239 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> *>转换为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; 
} 
相关问题