logo

C++의 벡터 지우기() 및 지우기()

전제 조건: C++의 벡터

벡터는 요소가 삽입되거나 삭제될 때 자동으로 크기를 조정하고 해당 저장 공간을 컨테이너에서 자동으로 처리하는 기능을 갖춘 동적 배열과 동일합니다.



벡터::지우기()

그만큼 분명한() 함수는 벡터 컨테이너의 모든 요소를 ​​제거하여 크기를 0으로 만드는 데 사용됩니다.

통사론:

 vector_name .clear()>

매개변수: 매개변수가 전달되지 않습니다.



결과: 벡터의 모든 요소가 제거(또는 파괴)됩니다.

예:

 Input: myvector= {1, 2, 3, 4, 5}; myvector.clear(); Output: myvector= {}>

C++






// C++ program to demonstrate> // Implementation of clear() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>마이벡터;> >myvector.push_back(1);> >myvector.push_back(2);> >myvector.push_back(3);> >myvector.push_back(4);> >myvector.push_back(5);> >// Vector becomes 1, 2, 3, 4, 5> >myvector.clear();> >// vector becomes empty> >// Printing the vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }>

>

>

산출

 No Output>

시간 복잡도: 에)
보조 공간: 오(1)
모든 요소는 하나씩 파괴됩니다.

오류 및 예외

  1. 예외 발생 보장이 없습니다.
  2. 매개변수가 전달되면 오류가 표시됩니다.

벡터::지우기()

삭제() 함수는 지정된 위치나 범위의 컨테이너에서 요소를 제거하는 데 사용됩니다.

통사론:

 vector_name . erase( position ) ; for deletion at specific position vector_name . erase( starting_position , ending_position ) ; // for deletion in range>

매개변수:

  • 반복자 형태로 제거할 요소의 위치입니다.
  • 범위는 시작 및 끝 반복자를 사용하여 지정됩니다.

결과: 컨테이너의 지정된 위치에서 요소가 제거됩니다.

예:

 Input : myvector= {1, 2, 3, 4, 5}, iterator= myvector.begin()+2 myvector.erase(iterator); Output : 1, 2, 4, 5 Input : myvector= {1, 2, 3, 4, 5, 6, 7, 8}, iterator1= myvector.begin()+3, iterator2= myvector.begin()+6 myvector.erase(iterator1, iterator2); Output : 1, 2, 3, 7, 8>

풀이요소특정 위치

예:

C++




// C++ program to demonstrate> // working of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>마이벡터{ 1, 2, 3, 4, 5 };> >vector<>int>>::반복자 it;> >it = myvector.begin();> >myvector.erase(it);> >// Printing the Vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }>

>

>

산출

역방향 문자열 자바
 2 3 4 5>

시간 복잡도: 에)
보조 공간: 오(1)

특정 요소 제거

값을 기준으로 특정 요소를 삭제하려면 먼저 해당 요소의 위치를 ​​알아야 하며 find() 함수를 사용하여 찾을 수 있습니다.

예:

C++




// C++ program to remove element based on its value> #include> using> namespace> std;> int> main()> {> >vector<>int>>벡터 = {1, 2, 3, 3, 4, 5 };> >cout <<>'vector before deleting '> << endl;> >for> (>auto> element : vector) {> >cout << element <<>' '>;> >}> >// finding the position of the element in the vector> >int> valueToBeDeleted = 3;> >auto> it = find(vector.begin(), vector.end(),> >valueToBeDeleted);> >if> (it != vector.end()) {> >vector.erase(it);> >}> >cout << endl> ><<>'Vector after deleting valueToBeDeleted '> ><< endl;> >for> (>auto> element : vector) {> >cout << element <<>' '>;> >}> >cout << endl;> >return> 0;> }>

>

>

산출

vector before deleting 1 2 3 3 4 5 Vector after deleting valueToBeDeleted 1 2 3 4 5>

범위 내의 요소 제거

C++




// C++ program to demonstrate> // Implementation of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>마이벡터{ 1, 2, 3, 4, 5 };> >vector<>int>>::반복자 it1, it2;> >it1 = myvector.begin();> >it2 = myvector.end();> >it2--;> >it2--;> >myvector.erase(it1, it2);> >// Printing the Vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }>

>

>

산출

 4 5>

시간 복잡도: 에)
보조 공간: 오(1)

벡터 쌍 요소 제거

예:

C++




#include> using> namespace> std;> // Function to print vector pair elements> void> print(vectorint, string>>& 것) { cout<< '['; for (int i = 0; i cout << '{' << vec[i].first << ',' << vec[i].second << '}'; if (i cout << ', '; } cout << ']' << endl; } int main() { vectorint, string>> x = { { 1, '사과' }, { 2, '바나나' }, { 3, '체리' }, { 4, '구아바' } }; // 위치 1(인덱스 0)의 요소를 제거합니다. x.erase(x.begin()); 인쇄(x); // 인쇄 [{2,banana}, {3,cherry}, {4,Guava}] // 위치 0과 1(인덱스 0과 // 및 1)에 있는 요소를 제거합니다. x.erase(x.begin(), x.begin() + 2); 인쇄(x); // 인쇄 [{4,Guava}] // 벡터를 지웁니다. x.clear(); 인쇄(x); // 아무것도 인쇄하지 않음(빈 괄호만) return 0; } // 이 코드는 Susobhan Akhuli가 제공한 것입니다.>

>

>

산출

[{2,banana}, {3,cherry}, {4,Guava}] [{4,Guava}] []>

시간 복잡도: 에)
보조 공간: 오(1)

오류 및 예외

  1. 위치가 유효한 경우 예외 발생 보장이 없습니다.
  2. 그렇지 않으면 정의되지 않은 동작을 표시합니다.

애플리케이션

정수 목록이 주어지면 벡터에서 모든 짝수 요소를 제거하고 벡터를 인쇄합니다.

입력:

1, 2, 3, 4, 5, 6, 7, 8, 9>

산출:

1 3 5 7 9>

설명: 2, 4, 6, 8은 짝수이고 벡터에서 지워집니다.

연산

  1. 벡터 크기에 맞춰 루프를 실행합니다.
  2. 각 위치의 요소가 2로 나누어지는지 확인하고, 그렇다면 요소를 제거하고 반복자를 줄입니다.
  3. 최종 벡터를 인쇄합니다.

아래 프로그램은 위의 접근 방식을 구현합니다.

C++




// C++ program to demonstrate> // Application of erase() function> #include> #include> using> namespace> std;> int> main()> {> >vector<>int>>마이벡터{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };> >for> (>auto> i = myvector.begin(); i != myvector.end();> >++i) {> >if> (*i % 2 == 0) {> >myvector.erase(i);> >i--;> >}> >}> >// Printing the vector> >for> (>auto> it = myvector.begin(); it != myvector.end();> >++it)> >cout <<>' '> << *it;> >return> 0;> }>

>

>

산출

 1 3 5 7 9>

시간 복잡도: 최악의 경우 O(N)은 삭제에 선형 시간이 걸리기 때문입니다.

Clear() vs erasure(), 언제 무엇을 사용하나요?

분명한() 벡터 컨테이너에서 모든 요소를 ​​제거하여 크기를 0으로 만듭니다. 벡터의 모든 요소는 다음을 사용하여 제거됩니다. 분명한() 기능.

삭제() 반면에 함수는 컨테이너에서 특정 요소를 제거하거나 컨테이너에서 요소 범위를 제거하여 제거된 요소 수만큼 크기를 줄이는 데 사용됩니다.