2012-08-16 146 views
0

我没有找到完全相同的问题。将std :: vector <boost :: shared_ptr <T>>转换为std :: vector的优雅方案<T*>

是有办法的转换:

std::vector<boost::shared_ptr<T>> 

到非安全型:

std::vector<T*> 

未经原向量中的每个元素做一个for循环,并使用获得() ?

+1

“在1班轮”的要求真的很重要吗? (即,这是代码高尔夫球还是真实代码?) – 2012-08-16 11:02:57

+0

@ R. Martinho Fernandes:我想避免在迭代中遍历矢量的每个元素并找到一个优雅解决方案的答案。 1班轮并不是真正的要求,我编辑了这个问题(谢谢) – BlueTrin 2012-08-16 11:04:13

回答

9
std::transform(safe.begin(), safe.end(), std::back_inserter(unsafe), 
       boost::bind(&boost::shared_ptr<T>::get, _1)); 
相关问题