logo

C++ 표준 템플릿 라이브러리(STL) 목록

목록은 순서입니다 컨테이너 비 연속적인 메모리 할당을 허용합니다. 벡터에 비해 목록의 순회 속도는 느리지만 일단 위치를 찾으면 삽입과 삭제가 빠릅니다(일정한 시간). 일반적으로 List를 말할 때 우리는 이중 연결 리스트 . 단일 연결 리스트를 구현하기 위해 다음을 사용합니다. 앞으로_목록 .

표준::목록 목록 컨테이너의 클래스입니다. C++ 표준 템플릿 라이브러리(STL)의 일부이며 내부에 정의되어 있습니다. 헤더 파일.

통사론:



std::list name_of_list;>

예:

C++




// C++ program to demonstrate the use of list containers> #include> #include> using> namespace> std;> int> main()> {> >// defining list> >list<>int>>gqlist{12,45,8,6};> >for> (>auto> i : gqlist) {> >cout << i <<>' '>;> >}> >return> 0;> }>

>

>

문자열 추가 자바
산출

12 45 8 6>

위의 예에서는 std::list라는 개체를 만들었습니다. gqlist 초기화_목록을 사용하여 초기화했습니다. 언급된 다양한 방법을 사용하여 std::list 객체를 초기화할 수 있습니다. 여기.

std::list의 일부 기본 작업

  • 앞쪽() 목록의 첫 번째 요소 값을 반환합니다.
  • 뒤쪽에() 목록의 마지막 요소 값을 반환합니다.
  • push_front() 목록 시작 부분에 새 요소 'g'를 추가합니다.
  • push_back() 목록 끝에 새 요소 'g'를 추가합니다.
  • 팝프론트() 목록의 첫 번째 요소를 제거하고 목록 크기를 1만큼 줄입니다.
  • 팝백() 목록의 마지막 요소를 제거하고 목록 크기를 1만큼 줄입니다.
  • 끼워 넣다() 목록의 지정된 위치에 있는 요소 앞에 새 요소를 삽입합니다.
  • 크기() 목록의 요소 수를 반환합니다.
  • 시작하다() start() 함수는 목록의 첫 번째 요소를 가리키는 반복자를 반환합니다.
  • 끝() end() 함수는 마지막 요소 뒤에 오는 이론적 마지막 요소를 가리키는 반복자를 반환합니다.

아래 예제에서는 목록 컨테이너의 일반적인 사용과 C++의 기본 기능을 보여줍니다.

예:

C++




// C++ program to demonstrate the implementation of List> #include> #include> #include> using> namespace> std;> // function for printing the elements in a list> void> showlist(list<>int>>지)> {> >list<>int>>::반복자 it;> >for> (it = g.begin(); it != g.end(); ++it)> >cout <<>' '> << *it;> >cout <<>' '>;> }> // Driver Code> int> main()> {> >list<>int>>gqlist1, gqlist2;> >for> (>int> i = 0; i <10; ++i) {> >gqlist1.push_back(i * 2);> >gqlist2.push_front(i * 3);> >}> >cout <<>' List 1 (gqlist1) is : '>;> >showlist(gqlist1);> >cout <<>' List 2 (gqlist2) is : '>;> >showlist(gqlist2);> >cout <<>' gqlist1.front() : '> << gqlist1.front();> >cout <<>' gqlist1.back() : '> << gqlist1.back();> >cout <<>' gqlist1.pop_front() : '>;> >gqlist1.pop_front();> >showlist(gqlist1);> >cout <<>' gqlist2.pop_back() : '>;> >gqlist2.pop_back();> >showlist(gqlist2);> >cout <<>' gqlist1.reverse() : '>;> >gqlist1.reverse();> >showlist(gqlist1);> >cout <<>' gqlist2.sort(): '>;> >gqlist2.sort();> >showlist(gqlist2);> >return> 0;> }>

>

>

산출

List 1 (gqlist1) is : 0 2 4 6 8 10 12 14 16 18 List 2 (gqlist2) is : 27 24 21 18 15 12 9 6 3 0 gqlist1.front() : 0 gqlist1.back() : 18 gqlist1.pop_front() : 2 4 6 8 10 12 14 16 18 gqlist2.pop_back() : 27 24 21 18 15 12 9 6 3 gqlist1.reverse() : 18 16 14 12 10 8 6 4 2 gqlist2.sort(): 3 6 9 12 15 18 21 24 27>

위의 예는 std::list와 해당 멤버 함수의 일반적인 사용법만 보여줍니다. 아래 표는 std::list 클래스의 모든 멤버 함수와 자세한 설명 링크를 제공합니다.

그렇지 않으면 자바

std::list 멤버 함수

기능

정의

앞쪽() 목록의 첫 번째 요소 값을 반환합니다.
뒤쪽에() 목록의 마지막 요소 값을 반환합니다.
push_front(g) 목록 시작 부분에 새 요소 'g'를 추가합니다.
push_back(g) 목록 끝에 새 요소 'g'를 추가합니다.
팝프론트() 목록의 첫 번째 요소를 제거하고 목록 크기를 1만큼 줄입니다.
팝백() 목록의 마지막 요소를 제거하고 목록 크기를 1만큼 줄입니다.
목록::시작() start() 함수는 목록의 첫 번째 요소를 가리키는 반복자를 반환합니다.
목록::끝() end() 함수는 마지막 요소 뒤에 오는 이론적 마지막 요소를 가리키는 반복자를 반환합니다.
rbegin() 및 rend() 나열 rbegin()은 목록의 마지막 요소를 가리키는 역방향 반복자를 반환합니다. rend()는 목록 시작 전 위치를 가리키는 역방향 반복자를 반환합니다.
cbegin() 및 cend() 나열 cbegin()은 목록의 시작 부분을 가리키는 상수 임의 액세스 반복자를 반환합니다. cend()는 목록의 끝을 가리키는 상수 무작위 액세스 반복자를 반환합니다.
crbegin() 및 crend() 나열 crbegin()은 목록의 마지막 요소, 즉 컨테이너의 반대 시작을 가리키는 상수 역방향 반복자를 반환합니다. crend()는 목록의 첫 번째 요소 앞에 있는 이론적인 요소, 즉 목록의 반대쪽 끝을 가리키는 상수 역방향 반복자를 반환합니다.
비어 있는() 목록이 비어 있는지(1) 비어 있는지(0)를 반환합니다.
끼워 넣다() 목록의 지정된 위치에 있는 요소 앞에 새 요소를 삽입합니다.
삭제() 목록에서 단일 요소 또는 요소 범위를 제거합니다.
양수인() 현재 요소를 바꾸고 목록 크기를 조정하여 목록에 새 요소를 할당합니다.
제거하다() 주어진 요소와 동일한 모든 요소를 ​​목록에서 제거합니다.
목록::remove_if() 함수에 매개변수로 제공된 술어나 조건에 해당하는 모든 값을 목록에서 제거하는 데 사용됩니다.
뒤집다() 목록을 반대로 바꿉니다.
크기() 목록의 요소 수를 반환합니다.
목록 크기 조정() 목록 컨테이너의 크기를 조정하는 데 사용됩니다.
종류() 목록을 오름차순으로 정렬합니다.
목록 최대 크기() 목록 컨테이너가 보유할 수 있는 최대 요소 수를 반환합니다.
고유한 목록() 목록에서 중복된 연속 요소를 모두 제거합니다.
list::emplace_front() 및 list::emplace_back() .emplace_front() 함수는 목록 컨테이너에 새 요소를 삽입하는 데 사용되며 목록 시작 부분에 개체를 생성합니다.
. emplace_back() 함수는 목록 컨테이너에 새 요소를 삽입하는 데 사용되며 목록 끝 부분에 개체를 생성합니다.
목록::지우기() Clear() 함수는 목록 컨테이너의 모든 요소를 ​​제거하여 크기를 0으로 만드는 데 사용됩니다.
목록::연산자= 이 연산자는 기존 콘텐츠를 대체하여 컨테이너에 새 콘텐츠를 할당하는 데 사용됩니다.
목록::스왑() 이 함수는 한 목록의 내용을 다른 목록으로 바꾸는 데 사용됩니다.
리스트 스플라이스() 한 목록에서 다른 목록으로 요소를 전송하는 데 사용됩니다.
목록 병합() 두 개의 정렬된 목록을 하나로 병합합니다.
목록 배치() 지정된 위치에 새 요소를 삽입하여 목록을 확장하고 목록 시작 부분에 개체를 생성하여 복사 작업을 방지하여 잠재적으로 성능을 향상시킵니다.

목록 컨테이너에 대해 기억해야 할 사항

  • 일반적으로 양방향으로 순회하는 동적 이중 연결 목록을 사용하여 구현됩니다.
  • 배열 및 벡터에 비해 삽입 및 삭제 작업이 더 빠릅니다.
  • 순차 액세스만 제공합니다. 중간 요소에 대한 무작위 액세스는 불가능합니다.
  • 이는 템플릿으로 정의되므로 모든 데이터 유형을 보유할 수 있습니다.
  • 이는 정렬되지 않은 목록처럼 작동합니다. 이는 기본적으로 목록의 순서가 유지되지 않음을 의미합니다. 그러나 정렬 기술이 있습니다.