vector erase 예제


지우기 제거 관용구는 const_iterator(예: set)[5] 벡터를 반환하는 컨테이너에는 사용할 수 없으며, 벡터는 요소를 삽입하거나 삭제할 때 자동으로 크기를 조정하고 저장소가 처리되는 동적 배열과 동일합니다. 컨테이너에 의해 자동으로 처리됩니다. 지우기는 컬렉션에서 요소를 삭제하는 데 사용할 수 있지만 벡터와 같은 배열을 기반으로 하는 컨테이너의 경우 삭제된 요소 이후의 모든 요소를 앞으로 이동하여 컬렉션의 „간격“을 방지해야 합니다. 동일한 컨테이너에서 지우기 여러 번 호출하면 요소를 이동하여 많은 오버헤드가 발생합니다. erase() 함수는 지정된 위치 또는 범위에서 컨테이너에서 요소를 제거하는 데 사용됩니다. 끝() 이터레이터를 포함하여 지우기 지점 또는 그 이후에 이터레이터 및 참조를 무효화합니다. 선형: T의 소멸자 호출 수는 지워진 요소의 수와 같으며, T의 할당 연산자는 지워진 요소 벡터::erase() 의 라이브러리 함수인 벡터의 요소 수와 동일한 횟수를 호출합니다. 또는“ 헤더는 벡터에서 요소를 지우거나 삭제하는 데 사용되며 지정된 거위에서 하나의 요소를 제거하거나 요소 범위를 제거합니다. std::remove 알고리즘은 헤드를 유지하고 컨테이너 위로 반복해서 수행합니다. 처음 4개의 요소에 대해 머리가 이동하고 요소가 테스트되지만 요소는 복사되지 않습니다.

다섯 번째 요소에 대해서만 개체가 마지막 위치에서 첫 번째 위치로 복사되고 알고리즘은 단일 복사본으로 완료되고 이터레이터를 두 번째 위치로 반환합니다. 이것은 O(N) 알고리즘입니다. 이후 std::vector::erase 범위의 나머지 요소는 모두 파괴되고 컨테이너의 크기를 조정합니다. 지우기를 사용하여 벡터 제거 요소를 하나씩 이동하면 1을 제거하여 나머지 요소의 복사본이 이동됩니다(4). 그런 다음 2를 제거하고 나머지 모든 요소를 하나씩 이동합니다(3)… 패턴이 표시되면 O(N^2) 알고리즘입니다. 벡터::지우기 : 벡터에서 단일 요소(위치) 또는 요소 범위([첫 번째, 마지막))에서 제거합니다. 요소가 실제로 제거되지 않고 컨테이너가 동일한 크기를 유지하므로 배열의 꼬리길이는 „제거된“ 항목 수와 같습니다. 이러한 항목은 메모리에 남아 있지만 지정되지 않은 상태입니다. remove는 지우기 위해 단일 호출을 사용하여 삭제할 수 있도록 이러한 tail 요소의 첫 번째 를 가리키는 이터레이터를 반환합니다. 지우기만 사용하여 동일한 작업을 수행하면 제거할 요소가 있는 만큼 많은 가공 패스가 생성됩니다.

이러한 각 패스에 대해 지워진 요소 이후의 모든 요소를 이동해야 하므로 단일 패스에서 요소를 이동하는 것보다 시간이 많이 걸립니다. C ++ STL 벡터 ::erase() 함수 : 여기서는 예제를 통해 C ++ STL에서 벡터 헤더의 지우기() 함수에 대해 알아봅니다. IncludeHelp에 의해 제출, 5 월 16, 2019 지우기 제거 관용구는 C ++ 표준 라이브러리 컨테이너에서 특정 기준을 충족 하는 요소를 제거 하는 일반적인 C ++ 기술. [1] [2] [3] std::제거 및 std::remove_if 제거 된 요소를 유지 하지 않습니다 (std::p artition, std:stable_partition). 따라서 지우기 제거는 리소스 누수없이 전체 값 의미 체계가 있는 요소를 보유한 컨테이너에서만 사용할 수 있습니다. [6] C++ 함수 std:::vector::erase()는 벡터에서 단일 요소를 제거합니다. clear()는 벡터 컨테이너에서 모든 요소를 제거하여 크기 0을 만듭니다. 벡터의 모든 요소는 clear() 함수를 사용하여 제거됩니다. 반면에 erase() 함수는 컨테이너에서 특정 요소 또는 컨테이너에서 요소 범위를 제거하는 데 사용되므로 제거된 요소 수에 따라 크기가 줄어듭니다. 다음 예제에서는 std::vector::erase() 함수의 사용을 보여 주며 있습니다. 반환 값: 이터레이터 – 벡터::erase() 함수에 의해 지워진 마지막 요소 다음에 있는 요소를 가리키는 이터레이터를 반환합니다. 시간 복잡성: 첫 번째 요소가 삭제되는 최악의 경우 O(1)가 마지막 요소가 삭제되는 최상의 경우 O(1)가 삭제되는 경우.