목록은 순서입니다 컨테이너 비 연속적인 메모리 할당을 허용합니다. 벡터에 비해 목록의 순회 속도는 느리지만 일단 위치를 찾으면 삽입과 삭제가 빠릅니다(일정한 시간). 일반적으로 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으로 만드는 데 사용됩니다. |
| 목록::연산자= | 이 연산자는 기존 콘텐츠를 대체하여 컨테이너에 새 콘텐츠를 할당하는 데 사용됩니다. |
| 목록::스왑() | 이 함수는 한 목록의 내용을 다른 목록으로 바꾸는 데 사용됩니다. |
| 리스트 스플라이스() | 한 목록에서 다른 목록으로 요소를 전송하는 데 사용됩니다. |
| 목록 병합() | 두 개의 정렬된 목록을 하나로 병합합니다. |
| 목록 배치() | 지정된 위치에 새 요소를 삽입하여 목록을 확장하고 목록 시작 부분에 개체를 생성하여 복사 작업을 방지하여 잠재적으로 성능을 향상시킵니다. |
목록 컨테이너에 대해 기억해야 할 사항
- 일반적으로 양방향으로 순회하는 동적 이중 연결 목록을 사용하여 구현됩니다.
- 배열 및 벡터에 비해 삽입 및 삭제 작업이 더 빠릅니다.
- 순차 액세스만 제공합니다. 중간 요소에 대한 무작위 액세스는 불가능합니다.
- 이는 템플릿으로 정의되므로 모든 데이터 유형을 보유할 수 있습니다.
- 이는 정렬되지 않은 목록처럼 작동합니다. 이는 기본적으로 목록의 순서가 유지되지 않음을 의미합니다. 그러나 정렬 기술이 있습니다.