2012-08-16 6 views
0

정확히 같은 질문을 찾지 못했습니다. 원래 벡터의 각 요소에 대해) (for 루프를하고 갔지 사용하지 않고std :: vector <boost :: shared_ptr <T>>을 std :: vector로 변환하는 우아한 솔루션 <T*>

std::vector<T*> 

: 비 안전 버전으로

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

:

를 변환하는 방법이 있나요 ?

+1

"1 라이너에서"요구 사항이 정말로 중요합니까? (코드 골프 또는 실제 코드의 경우입니까?) –

+0

@R. Martinho Fernandes : 저는 벡터의 각 요소를 반복하여 우아한 해결책을 찾는 답을 피고 싶었습니다. 1 라이너는 실제로 요구 사항이 아니며 질문을 편집했습니다 (감사합니다). – BlueTrin

답변

9
std::transform(safe.begin(), safe.end(), std::back_inserter(unsafe), 
       boost::bind(&boost::shared_ptr<T>::get, _1)); 
관련 문제