효과적인 벡터 콘텐츠 복제 및 추가
벡터 작업 시 요소를 복제하여 콘텐츠 끝에 추가해야 하는 경우가 많습니다. 원본 벡터. 루프를 사용하지 않으면 까다로울 수 있습니다.
반복 솔루션의 과제
std::Vector::insert()와 같은 메서드는 이 작업에 적합하지 않습니다. 삽입하는 동안 벡터가 유효하지 않게 될 수 있습니다.
크기 조정 및 Copy_n
더 세련된 솔루션에는 두 단계가 포함됩니다.
다음은 두 가지 구현 예입니다.
// Using resize() and copy_n() auto old_count = xx.size(); xx.resize(2 * old_count); std::copy_n(xx.begin(), old_count, xx.begin() + old_count); // Using reserve() and copy_n() via back_inserter() auto old_count = xx.size(); xx.reserve(2 * old_count); std::copy_n(xx.begin(), old_count, std::back_inserter(xx));
두 경우 모두 원본 벡터의 크기는 두 배가 됩니다. 중복을 수용하기 위해 copy_n() 작업을 사용하여 요소를 전송합니다. end() 반복자는 재할당 후 벡터의 끝을 지나기 때문에 크기를 조정하고 Reserve()를 copy_n()과 함께 사용하기 전에 원래 벡터 크기를 기억하는 것이 중요합니다.
위 내용은 루프를 사용하지 않고 벡터 내용을 효율적으로 복제하고 추가할 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!