Table of Contents
C++ – list
list 사용법을 정리해 봅니다.
자주 사용해야 하는 기능인데 매번 인터넷 검색하기가 귀찮네요.
변수 생성
#include <stdio.h>
#include <list>
using namespace std;
int main() {
// 변수 생성만으로 초기화가 이루어진다.
list<int> lst;
printf("list size : %zu\n", lst.size());
return 0;
}
데이타입력
#include <stdio.h>
#include <list>
using namespace std;
int main() {
list<int> lst;
lst.push_back(10);
lst.push_front(20);
list<int>::iterator iter;
for(iter = lst.begin(); iter!= lst.end(); iter++) {
printf("%d\n", *iter);
}
return 0;
}
데이타 반환
// 맨 앞의 원소를 반환(return), 제거 XXX
lst.front()
// 맨 뒤의 원소를 반환(return), 제거 XXX
lst.back()
// 맨 첫번째 원소를 제거합니다.
lst.pop_front()
// 맨 마지막 원소를 제거합니다.
lst.pop_back()
remove_if
#include <stdio.h>
#include <list>
#include <algorithm>
using namespace std;
int main() {
list<int> lst;
lst.push_back(10);
lst.push_front(20);
auto it_test = remove_if(lst.begin(), lst.end(),
[](int i) {
return (i < 15);
}
);
lst.erase(it_test, lst.end());
list<int>::iterator iter;
for(iter = lst.begin(); iter!= lst.end(); iter++) {
printf("%d\n", *iter);
}
return 0;
}
sort, reverse_iterator
#include <stdio.h>
#include <list>
#include <algorithm>
using namespace std;
int main() {
list<int> lst;
lst.push_back(20);
lst.push_back(10);
// operator< 를 이용해 정렬합니다.
lst.sort();
list<int>::iterator iter;
for(iter = lst.begin(); iter!= lst.end(); iter++) {
printf("%d\n", *iter);
}
list<int>::reverse_iterator riter;
for(riter = lst.rbegin(); riter!= lst.rend(); riter++) {
printf("%d\n", *riter);
}
return 0;
}
구조체 정렬
#include <stdio.h>
#include <list>
#include <algorithm>
using namespace std;
struct Rank {
int score;
char userName[32];
// operator< 를 정의해 줍니다.
bool operator< (const Rank &rhs) const {
return score < rhs.score;
}
};
int main() {
list<Rank> lst;
Rank man1 = {
80, "man1"
};
Rank man2 = {
70, "man2"
};
lst.push_back(man1);
lst.push_back(man2);
lst.sort();
list<Rank>::iterator iter;
for(iter = lst.begin(); iter!= lst.end(); iter++) {
printf("%s\n", (*iter).userName);
}
return 0;
}