问题描述
我想知道是否有其他方法可以将共享指针的向量转换为原始指针的向量,而不是通过循环来完成:
\\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(); });