직접 답변 :
벡터의 값을 다른 값으로 할당하기 위해 std::vector::operator=
컨테이너 의 public 멤버 함수 를 사용할 수 있습니다 std::vector
.
게다가 생성자 함수도 의미가 있습니다. 매개 변수로 다른 벡터를 가진 생성자 함수 (예 :x
x
는의 순서대로 각 요소의 복사본이있는 컨테이너를 구성합니다 .
주의:
- 사용하지 마세요
std::vector::swap
std::vector::swap
벡터를 다른 벡터로 복사 하지 않고 이름에서 알 수 있듯이 실제로 두 벡터의 요소를 교체합니다. 다시 말해, 복사 할 소스 벡터 std::vector::swap
가 호출 된 후 수정 됩니다. 이는 아마도 예상과 다릅니다.
소스 벡터의 요소가 다른 데이터에 대한 포인터 인 경우 때로는 딥 카피가 필요합니다.
Wikipedia에 따르면 :
딥 카피는 필드가 역 참조됨을 의미합니다. 복사중인 객체에 대한 참조가 아니라 참조 된 객체에 대해 새로운 복사 객체가 생성되며이 객체에 대한 참조는 B에 배치됩니다.
실제로 현재 C ++에는 딥 카피를 수행하는 기본 제공 방법이 없습니다. 위에서 언급 한 모든 방법은 얕습니다. 딥 카피가 필요한 경우 벡터를 탐색하고 참조 사본을 수동으로 만들 수 있습니다. 또는 순회를 위해 반복자가 고려 될 수 있습니다. 반복자에 대한 토론은이 질문을 넘어선 것입니다.
참고 문헌
std::vector
cplusplus.com 의 페이지