someVector.clear();
std::vector<int>().swap(someVector);
및
someVector.clear();
std::vector<int> (someVector).swap(someVector);
아니면이 같은 일을 수행 할 차이점은 무엇입니까?
편집 : 목표는 someVector와 관련된 메모리를 확보하는 것입니다.
someVector.clear();
std::vector<int>().swap(someVector);
및
someVector.clear();
std::vector<int> (someVector).swap(someVector);
아니면이 같은 일을 수행 할 차이점은 무엇입니까?
편집 : 목표는 someVector와 관련된 메모리를 확보하는 것입니다.
그들은 모두 벡터를 지우려고 시도하고 사용중인 저장소를 할당 해제하려고 시도하기 때문에 사례에서 차이가 없습니다. 단순히 clear()
으로 전화하는 것만으로 보장 할 수는 없습니다. 벡터의 용량을 그대로 남겨 둘 수 있습니다.
첫 번째 경우 clear
을 호출하는 것은 의미가 없습니다. 두 번째 줄은 벡터를 빈 것과 바꿔서 메모리를 할당 해제합니다.
두 번째 경우에도 메모리가 할당 취소된다는 보장은 없습니다. 벡터를 복사하면 용량이 보존 될 수도 있고 유지되지 않을 수도 있습니다.
을 수행하는 방법은 다음과 같습니다
이std::vector<int>().swap(someVector);
C++ 11에서, 당신은 다른 방법 clear()
후 shrink_to_fit()
를 호출 할 수 있습니다; 하지만 메모리를 해제 할 수도 없습니다.
첫 번째 것은 빈 벡터 (기본 생성자)를 만들고 someVector로 교체합니다. 두 번째 것은 someVector (복사 생성자)에서 벡터를 만들고 someVector로 교체합니다.
그들은 똑같이 무의미하거나 분명히하지 않았습니다. 뭐하고 싶어? –