将std :: vector <boost :: shared_ptr <T >>转换为std :: vector <T*>的优雅解决方案

Blu*_*rin 0 c++ boost std

我没有找到完全相同的问题.

有没有办法转换:

std::vector<boost::shared_ptr<T>>
Run Code Online (Sandbox Code Playgroud)

进入非安全版本:

std::vector<T*>
Run Code Online (Sandbox Code Playgroud)

没有做一个for循环并在原始向量的每个元素上使用.get()?

Mik*_*our 9

std::transform(safe.begin(), safe.end(), std::back_inserter(unsafe),
               boost::bind(&boost::shared_ptr<T>::get, _1));
Run Code Online (Sandbox Code Playgroud)