>  기사  >  백엔드 개발  >  std::Vector는 Push_back()에서 객체를 복사합니까?

std::Vector는 Push_back()에서 객체를 복사합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-04 04:44:01412검색

Does std::vector Copy Objects on Push_back()?

std::Vector가 push_back()에서 객체를 복사합니까?

Valgrind를 사용한 조사에 따라 사용자는 std::Vector가 push_back()을 생성한다고 결론지었습니다. push_back()을 수행할 때 객체의 복사본. 이는 다음 질문을 제기합니다:

복사하지 않고 std::Vector 참조나 포인터를 저장할 수 없습니까?

불행히도 대답은 '예'입니다. std::Vector::push_back()은 설계된 대로 인수로 전달된 객체의 복사본을 생성하고 이를 벡터 내에 저장합니다.

복사를 피하는 대안:

원하는 동작이 복사본 대신 포인터나 참조를 저장하는 것이라면 std::Vector 또는 std::Vector>

주의:

포인터나 참조를 사용할 때 참조된 개체가 전체에서 유효한지 확인하세요. 벡터의 수명. RAII(Resource Acquisition Is 초기화)를 활용하는 스마트 포인터를 사용하면 이 문제를 효과적으로 해결할 수 있습니다.

위 내용은 std::Vector는 Push_back()에서 객체를 복사합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.