C++ STL에서 STL 목록 컨테이너 사용
-
std::list<T>
를 사용하여 C++에서 목록 컨테이너 개체 선언 -
insert()
함수를 사용하여 C++ 목록의 지정된 위치에 요소 삽입 -
swap()
함수를 사용하여 C++에서 두 목록의 요소 교체 -
merge()
함수를 사용하여 정렬 된 두 목록을 하나로 결합
이 기사는 C++에서 STL list
컨테이너를 사용하는 방법에 대한 여러 방법을 보여줍니다.
std::list<T>
를 사용하여 C++에서 목록 컨테이너 개체 선언
std::list
컨테이너는 표준 템플릿 라이브러리의 일부이며 모든 위치에서 요소를 일정한 시간 삽입 / 제거를 제공하는 목록 데이터 구조를 구현합니다. 일반적으로 이중 연결 목록으로 구현되며std::forward_list
와는 반대로 양방향 반복을 지원합니다. 단점은std::list
가std::vector
또는std::deque
와 같은 요소에 대한 빠른 랜덤 액세스를 제공하지 않는다는 것입니다. 첫 번째 및 마지막 요소에 액세스하기 위해front
및back
의 두 가지 상수 시간 기능 만 제공합니다. std::list
는 다음 예제 코드에 설명 된대로 주어진 데이터 유형 및 공통 이니셜 라이저 목록 표기법으로 초기화 될 수 있습니다. push_back
및push_front
메소드를 사용하여 목록의 양쪽에 요소를 추가 할 수 있습니다.
#include <algorithm>
#include <iostream>
#include <list>
using std::cout;
using std::endl;
using std::list;
template <typename T>
void printList(list<T> l) {
for (const auto &item : l) {
cout << item << "; ";
}
cout << endl;
}
int main() {
std::list<int> l1 = {11, 12, 13, 14};
l1.push_front(15);
printList(l1);
l1.push_back(16);
printList(l1);
return EXIT_SUCCESS;
}
출력:
15; 11; 12; 13; 14;
15; 11; 12; 13; 14; 16;
insert()
함수를 사용하여 C++ 목록의 지정된 위치에 요소 삽입
insert()
멤버 함수를 사용하여 주어진 위치에 요소를 추가 할 수 있습니다. 이 함수에는 여러 오버로드가 있으며 그 중 첫 번째는 반복기와 개체에 대한 참조라는 두 개의 인수 만 사용합니다. 주어진 요소는 반복기가 가리키는 요소 앞에 삽입됩니다. 다음 코드 스 니펫은 목록에서 특정 값을 찾은 다음 그 앞에 원하는 요소를 삽입하는 방법을 보여줍니다.
#include <algorithm>
#include <iostream>
#include <list>
using std::cout;
using std::endl;
using std::list;
template <typename T>
void printList(list<T> l) {
for (const auto &item : l) {
cout << item << "; ";
}
cout << endl;
}
int main() {
std::list<int> l1 = {11, 12, 13, 14};
printList(l1);
auto iter = std::find(l1.begin(), l1.end(), 13);
if (iter != l1.end()) {
l1.insert(iter, 55);
}
printList(l1);
return EXIT_SUCCESS;
}
출력:
11; 12; 13; 14;
11; 12; 55; 13; 14;
swap()
함수를 사용하여 C++에서 두 목록의 요소 교체
std::list
컨테이너의 또 다른 유용한 멤버 함수는 목록 객체의 요소를 유일한 인수로 전달되는 다른 목록과 교환하는swap()
입니다. 이 작업은 개별 요소를 이동하거나 복사하지 않으며 모든 반복기 / 참조는 함수 호출 후에도 유효합니다.
#include <algorithm>
#include <iostream>
#include <list>
using std::cout;
using std::endl;
using std::list;
template <typename T>
void printList(list<T> l) {
for (const auto &item : l) {
cout << item << "; ";
}
cout << endl;
}
int main() {
std::list<int> l1 = {11, 12, 13, 14};
std::list<int> l2 = {1, 2, 3, 4, 11};
cout << "l2: ";
printList(l2);
l2.swap(l1);
cout << "l2: ";
printList(l2);
return EXIT_SUCCESS;
}
출력:
l2: 1; 2; 3; 4; 11;
l2: 11; 12; 13; 14;
merge()
함수를 사용하여 정렬 된 두 목록을 하나로 결합
또는merge
멤버 함수를 사용하여 정렬 된 두 목록의 요소를 하나로 결합 할 수 있습니다. 두 목록 모두 오름차순으로 정렬되어야합니다. merge
는 목록 개체에 대한 참조를 가져오고 그 요소는 호출자 개체에 병합됩니다. 작업 후 인수로 전달 된 목록 개체는 비어있게됩니다. 이 함수는 다음 코드 샘플과 같이 결과 목록 개체의 요소를 오름차순으로 정렬합니다.
#include <algorithm>
#include <iostream>
#include <list>
using std::cout;
using std::endl;
using std::list;
template <typename T>
void printList(list<T> l) {
for (const auto &item : l) {
cout << item << "; ";
}
cout << endl;
}
int main() {
std::list<int> l1 = {8, 10, 2, 4};
std::list<int> l2 = {7, 3, 9, 5, 1};
l2.sort();
l1.sort();
cout << "l2: ";
printList(l2);
l2.merge(l1);
cout << "l2: ";
printList(l2);
return EXIT_SUCCESS;
}
출력:
l2: 1; 3; 5; 7; 9;
l2: 1; 2; 3; 4; 5; 7; 8; 9; 10;
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook