이 작동합니다 :
이 시도 당신이에서 대신 값에 매핑되는 매핑 된 키 값을 의미하는 경우
std::for_each(mybimap.left.begin(),
mybimap.left.end(),
boost::bind(&vector_type::push_back, &myvec,
boost::bind(&map_type::left_map::value_type::second, _1)));
... 나, second
대신 first
를 사용 .
편집
: 나는이 이중 결합이 오히려 서투른 발견하고
for_each
이 아닌 최적의 알고리즘 (알고리즘 이름이 의도를 명시해야 이럴
copy
이 더 적합 할 것이다 그리고 여기에 명확하게 사본이다). 또한 여기에
transform iterator 사용할 수 있습니다
std::copy(boost::make_transform_iterator(mybimap.left.begin(), select_second()),
boost::make_transform_iterator(mybimap.left.end(), select_second()),
std::back_inserter(myvec));
이 select_second
는 한 쌍의 두 번째 요소를 선택하는 함수 객체가 될 것입니다 경우 - 또는 단지 boost::bind(&map_type::left_map::value_type::second, _1)
. 나는 기본적으로 (어떤 로켓 과학 쓰기 없음) 쓰기 전에 요소에 적용되는 단항 기능을 소요 back_inserter
입니다 직장에서 transform_back_inserter
작성 가지고 transform_iterator
를 사용할 수없는 상황에
- 다음 내가 단항 함수 이름을 반복 할 필요가 없기 때문에 가능하면
transform_iterator
을 선호하는 경향이
std::copy(mybimap.left.begin(),
mybimap.left.end(),
transform_back_inserter(myvec, select_second()));
과 같을 것이다.
그리고 ... (여기에 오류 설명 넣기) 때문에 작동하지 않습니까? – liori