将 std::vector<std::p air<const K, V>*> 转换为 std::vector<std::p air<const K, V>&g

Convert std::vector<std::pair<const K, V>*> to std::vector<std::pair<const K, V>>

本文关键字:std lt gt air const vector 转换      更新时间:2023-10-16

我想将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 );

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

寻求建议。谢谢!!

只有当您尝试分配元素或调用某些函数(如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;
}