[STL] List 생성, 삽입, 삭제 등 사용법
Notepad96
·2020. 11. 4. 21:22
1. list
list는 vector와 deque처럼 상대적인 순서를 유지하는 컨테이너이다.
하지만 vector와 deque가 배열 기반이였다면 list는 노드 기반으로서 이중 연결 리스트로 구현되어 있다.
그래서 vector와 deque와 멤버 함수가 유사하면서도 추가적으로 여러 함수가 더 있다.
list는 이중 연결 리스트로 구현되어 있기 때문에 vector, deque에서 비효율적이였던 insert()를 사용한 중간 삽입 또한 효율적으로 동작한다. ( 이중 연결 리스트에서는 링크만 바꾸어 주면되므로...)
따라서 상대적인 순서를 유지해야하며 중간에 삽입, 삭제가 빈번하게 발생할 것으로 예상된다면 list 컨테이너를 사용하는 것이 좋다.
2. 코 드
환경 : Visual Studio 2019
#include <iostream>
#include <list>
using namespace std;
int main() {
/* 생성자 */
list<int> list;
//list<int> list(4);
//list<int> list(5, 3);
/* 삽입, 삭제 */
list.push_back(5); // 5
list.push_front(3); // 3 5
list.push_back(2); // 3 5 2
list.push_front(4); // 4 3 5 2
list.pop_front(); // 3 5 2
list.pop_back(); // 3 5
/* 리스트 정렬(greater<int>() : 내림차순) */
list.sort(greater<int>());
for (int i : list) {
cout << i << " ";
}
cout << "\n";
/* 리스트 비우기 */
list.clear();
/* 중복된 원소 제거하기 */
// (1 2 3 4) X 5 번
for (int i = 0; i < 5; i++) {
for (int k = 1; k < 5; k++) {
list.push_back(k);
}
}
list.sort(); // 리스트 정렬하기(기본값 오름차순)
list.unique(); // 연속하는 중복된 원소 제거
for (auto i = list.begin(); i != list.end(); i++) {
cout << *i << " ";
}
cout << "\n";
return 0;
}
- 삽입, 삭제의 경우 deque처럼 앞뒤로 삽입, 삭제를 할 수 있다.
- list 는 sort() 멤버 함수를 지원하여 정렬을 할 수 있으며, 위의 경우 greater를 사용하여 내림차순으로 정렬하였다.
- unique는 연속되는 중복된 원소를 제거해 주는 함수이다.
- 따라서 해당 리스트에서 중복된 원소를 제거하고자 한다면 정렬을 해준 후 unique를 사용한다면 중복된 원소를 모두 제거할 수 있다.
3. 참 조
'C++ > Container' 카테고리의 다른 글
[STL] Map 생성, 삽입, 삭제 등 사용법 (0) | 2020.11.06 |
---|---|
[STL] Multiset 생성, 삽입, 삭제 등 사용법 (0) | 2020.11.05 |
[STL] Set 생성, 삽입, 삭제 등 사용법 (0) | 2020.11.05 |
[STL] Deque 생성, 삽입, 삭제 등 사용법 (0) | 2020.11.04 |
[STL] Vector 생성, 삽입, 삭제 등 사용법 (0) | 2020.11.03 |