在C++中将shared_ptr的向量转换为原始指针的向量

Convert vector of shared_ptr into the vector of raw pointers in C++

本文关键字:向量 转换 原始 指针 ptr C++ 中将 shared      更新时间:2024-03-29

我想知道除了通过循环之外,是否有其他方法可以将共享指针的矢量转换为原始指针的矢量:

\vecShared - initial vector of shared pointers
std::vector< double* > vecRaw;
for(unsigned int i=0; i<vecShared .size(); ++i)
vecRaw.push_back(vecShared[i].get());

如果还有其他方法,那么使用这些方法有好处吗?

当然是

vecRaw.reserve(vecShared.size());
std::transform(vecShared.cbegin(), vecShared.cend(), std::back_inserter(vecRaw),
[](auto& ptr) { return ptr.get(); });