list <T> 개체를 다른 개체에 추가하는 방법 멤버 B를 A. 몇

C ++에서는 두 개의 list<T>개체가 A있고의 B모든 멤버 BA. 몇 가지 다른 소스를 검색했지만 간단한 해결책 (ei A.append(B);)을 찾지 못했고 이것은 저를 약간 놀라게합니다.

이를 수행하는 가장 좋은 방법은 무엇입니까?

그렇게되면 B에 대해서는 신경 쓰지 않습니다 (다음 줄에서 삭제됨). 더 나은 성능을 위해이를 활용할 수있는 방법이 있다면 그것에 관심이 있습니다.



답변

B 에있는 항목의 사본 을 추가 하려면 다음을 수행 할 수 있습니다.

a.insert(a.end(), b.begin(), b.end());

B의 항목 을 A의 끝 으로 이동 하려면 (동시에 B를 비우기) 다음을 수행 할 수 있습니다.

a.splice(a.end(), b);

귀하의 상황에서 스 플라이 싱은 연결 목록에서 몇 가지 포인터를 조정하는 것만 포함하므로 더 좋을 것입니다.


답변

부스트를 사용한 한 가지 예

std::list<T> A; // object A is a list containing T structure
std::list<T> B; // object B is a list containing T structure

// append list B to list A
BOOST_FOREACH(auto &listElement, B) { A.push_back( listElement ); }