-
list 사용법
#include <list> // list 헤더파일을 추가해야 사용 가능
리스트는 해더파일을 추가해야 사용이 가능하다. 따라서 위와 같이 선언해주어야 함.
list<int> v = { 1,2,3,4,5 }; list <int> v(4); //int형 리스트 생성 후 크기를 4로 할당(모든 리스트요소 0으로 초기화) list <int> v(5, 1); //int형 리스트 생성 후 크기를 5로 할당(모든 리스트요소 1로 초기화) v.assign(5, 1); //0~4인덱스의 값을 1로 초기화
위의 방법은 벡터의 사용법과 크게 다르지 않다.
list 의 모든 요소 출력하기.
for (const int& num : myList){ cout << num << " "; }
반복문을 통해 리스트의 내용을 전부 출력할 때,
일반적인 for문의 형태를 가지지 않고 위와 같은 형태를 취한다.
list 에서만 사용되는 문법
• remove() – 특정 값 삭제
• remove_if(함수) – 특정 함수의 조건에 맞는 값 삭제
• splice() – 리스트간 요소 이동
• merge() – 정렬된 리스트 병합
• unique() – 중복 요소 제거
• sort() - 정렬
list 실습
✅ list 를 선언해보기.
✅ 4가 몇개인지 출력하기.
✅ 리스트를 정렬하기.
✅ 리스트의 중복 값을 제거하기.
✅ 리스트에 뒷쪽에 원하는 값 추가하기.
✅ 리스트의 앞쪽에 원하는 값 추가하기.
✅ 추가 : { 1 , 2 , 3 , 4 ,5 }의 리스트에서 앞에 0을 추가하고 가장 뒷 값을 제거하여 { 0 , 1, 2, 3, 4 }가 출력되게 하세요.
✅ 4가 몇개인지 출력하기.
int target = 4; int cnt = 0;
target 변수는 원하는 값 (4)을 지정하는 숫자로 설정하고, cnt는 리스트의 원소를 확인하며
target 과 동일하면 1씩 늘려가며 개수를 세는 역할을 할 것 입니다.
for (const int& num : myList) { if (num == target) { cnt++; } }
이를 코드로 구현하면 위와 같습니다.
✅ 리스트를 정렬하기.
myList.sort();
리스트는 해더파일로 알고리즘을 불러오지 않아도, 리스트명.sort() 를 통해 정렬을 할 수 있습니다.
✅ 리스트의 중복 값을 제거하기.
myList.unique();
중복 값 제거 역시 알고리즘을 따로 추가하지 않아도, unique() 함수를 통해 리스트 내에 존재하는
중복 값을 제거할 수 있습니다.
✅ 리스트에 뒷쪽에 원하는 값 추가하기.
myList.splice(myList.end(), myList2);
push_back() 을 통해 원하는 값 하나를 지정하여 뒷쪽으로 삽입할 수 있지만,
두 개를 동시에 삽입하기를 원하므로, 하나의 리스트를 추가로 생성 ( list<int> myList2 = { 6, 7 }; ) 하고
이를 splice 를 통해 합칠 것 입니다. 또한 뒤쪽에 삽입해야 하므로 end()를 사용합니다.
✅ 리스트의 앞쪽에 원하는 값 추가하기.
myList.splice(myList.begin(), myList3);
splice를 사용해서 0 이라는 원소 하나만 가진 myList3을 앞쪽으로 합치는 방법을 사용했습니다.
✅ 추가 : { 1 , 2 , 3 , 4 ,5 }의 리스트에서 앞에 0을 추가하고 가장 뒷 값을 제거하여 { 0 , 1, 2, 3, 4 }가 출력되게 하세요.
myList4.push_front(0); while (myList4.size() > 5) { myList4.pop_back(); }
가장 앞에 0을 추가하는 push_front() 와 가장 뒤에 있는 값을 제거하는 pop_back()을 동시에 사용했습니다.
위의 splice의 개념과 비슷하지만 약간은 다르다는 것을 확인할 수 있습니다.
또한 while 문은 문제 내에서는 많이 중요한 내용은 아니지만,
mylist4 배열의 크기가 5 라는 것을 고정시키기 위한 하나의 장치입니다.
단순히 앞 추가, 뒤 제거 였다면 필요한 작업은 아니였지만
코드가 길어졌을 때 놓칠 수 있는 상황을 대비한 작업입니다.
✅ 출력 화면 :
🎉해당 글의 내용은 "포스코 x 코딩온 스마트 팩토리 과정 수업" 에서의 수업 자료 및 실습 과제 등에서 일부 발췌되어 작성 되었습니다.
'개발 > C++' 카테고리의 다른 글
[C++] string 문법 응용 실습 : 입력받은 문자열이 정수로만 이루어져 있는지 판단하기. (0) 2023.09.06 [C++] string 함수 실습. (size(), length(), find()) (0) 2023.09.06 [C++] Vector 복습. 2차원 배열에서 행과 열의 합을 구하기. (0) 2023.09.05 [C++] Vector 문법 복습 및 예제 풀이 (0) 2023.09.05 [C++] namespace의 개념과 간단한 실습 (0) 2023.09.04 댓글 (비로그인 댓글 허용하지 않습니다.)