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

问题描述

我想知道是否有其他方法可以将共享指针的向量转换为原始指针的向量,而不是通过循环来完成:

\\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(); });

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...