将std :: vector *>转换为std :: vector >
问题描述:
我想将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);
做到这一点。但是,我找不到出路。
寻找建议。谢谢!!
答
const
只是一个问题,如果您尝试分配元素或调用某些功能,如insert
。但push_back
和emplace_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;
}
https://*.com/questions/6954906/does-c11-allow-vectorconst-t –
修订的问题。 std :: vector>应该是合法的,因为我的编译器不会抱怨。 –