크기를 조정하거나 지우는 것이 더 효율적인 다음 코드에서?벡터에서 지우거나 크기를 조정하는 것이 더 빠릅니다.
vector<int> a(5000);
//....
vector<int>::iterator it = remove(a.begin(),a.end(),8)
a.resize(std::distance(a.begin(),it));
//or
a.erase(it,a.end());
필자는 중복 된 요소의 수에 따라 다르다고 생각하십니까?
데이터를 연속으로 유지하려면 '벡터'가 필요하기 때문에 두 가지 모두 최적치가 아닙니다. 적절한 컨테이너를 사용하지 않는다는 표시입니다. – Bathsheba
@ Bathsheba 그것은 나에게 적절한 컨테이너처럼 보입니다. 일반적으로'std :: vector' (비 연관 컨테이너의 경우) 이외의 것을 사용해야하는 경우는 매우 드뭅니다. –
아무 대답도 제공하지 않으므로 하나의 대답이 없습니다. 일반적으로, 한 번에 하나의 요소를 제거하려고 할 때, 대부분의 구현에서 본질적으로 같은 일을하는 제거 지우기 관용구를 사용하는 것이 더 효율적일 수 있습니다. 그러나 벡터를 분할하여 작동하므로 (각 일치를 첫 번째 파티션의 뒷면과 바꿔) 구현 및 사용법에 따라 대량 연속 제거를 수행하지 않을 수 있습니다. – kfsone