Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ STL의 목록 지우기() 함수

<시간/>

이 기사에서는 C++에서 list::erase() 함수의 작동, 구문 및 예제에 대해 논의할 것입니다.

STL의 목록이란 무엇입니까?

목록은 순서대로 어디에서나 일정한 시간 삽입 및 삭제를 허용하는 데이터 구조입니다. 목록은 이중 연결 목록으로 구현됩니다. 목록은 비연속적인 메모리 할당을 허용합니다. 목록은 배열, 벡터 및 데크보다 컨테이너의 모든 위치에서 요소의 삽입 추출 및 이동을 더 잘 수행합니다. 목록에서 요소에 대한 직접 액세스는 느리고 목록은 forward_list와 비슷하지만 순방향 목록 개체는 단일 연결 목록이며 앞으로만 반복될 수 있습니다.

list::erase()란 무엇입니까?

list::erase()는 헤더 파일에 선언된 C++ STL의 내장 함수입니다. 지우기()는 목록 컨테이너에서 요소를 제거하는 데 사용됩니다. 목록 컨테이너에서 단일 요소 또는 요소 범위를 지울 수 있습니다. 제거/지울 요소의 수만큼 목록 컨테이너의 크기를 줄입니다.

구문

list_container.erase(positon);
list_container.erase(start_position, end_position);

이 함수는 하나 또는 두 개의 매개변수를 받아들일 수 있습니다 -

매개변수

  • position - 이것은 요소를 제거하려는 단일 위치입니다.

  • start_position, end_position - 요소를 제거하려는 범위를 정의합니다.

반환 값

이 함수는 제거된 마지막 요소 옆을 가리키는 반복자를 반환합니다.

예시

아래 코드에서 STLand에 있는 erase() 함수를 사용하여 요소를 지워야 합니다. 이를 위해 begin() 함수를 사용하여 첫 번째 요소를 가리키는 반복자를 사용하여 첫 번째 요소를 가져오고 그 후에 반복자를 지울 것입니다. 목록의 첫 번째 요소를 포함합니다.

#include <bits/stdc++.h>
using namespace std;
int main(){
   //Create a list
   list<int> myList;
   myList.push_back(2);
   myList.push_back(4);
   myList.push_back(6);
   myList.push_back(8);
   myList.push_back(10);
   cout<<"List before deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i<< " ";
   }
   //iterator that will point to the first element
   list<int>::iterator i = myList.begin();
   myList.erase(i);
   //list after deleting the element
   cout << "\nList after deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i << " ";
   }
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다.

List before deleting elements: 2 4 6 8 10
List after deleting elements: 4 6 8 10

예시

아래 코드에서 STLand에 있는 erase() 함수를 사용하여 요소를 지워야 합니다. 이를 위해 begin() 함수를 사용하여 첫 번째 요소를 가리키는 iterator(iterator 1)를 사용하여 첫 번째 요소를 가져오고 다른 요소를 가져옵니다. iterator(iterator 2)가 두 번째 요소를 가리키도록 한 다음 iterator 1과 iterator 2 사이의 범위에서 iterator를 지우고 결과를 표시합니다.

#include <bits/stdc++.h>
using namespace std;
int main(){
   //Create a list
   list<int> myList;
   myList.push_back(2);
   myList.push_back(4);
   myList.push_back(6);
   myList.push_back(8);
   myList.push_back(10);
   cout<<"List before deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i << " ";
   }
   //iterator that will point to the first element
   list<int>::iterator i_1, i_2;
   i_1 = myList.begin();
   i_2 = myList.begin();
   //advance() function will increment the position of iterator 2 by 3
   advance(i_2, 4);
   //now it will delete the elements from the range 0 - 4
   myList.erase(i_1, i_2);
   //list after deleting the element
   cout<< "\nList after deleting elements: ";
   for (auto i = myList.begin(); i!= myList.end(); i++){
      cout << *i << " ";
   }
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다.

List before deleting elements: 2 4 6 8 10
List after deleting elements: 10