Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 아두이노 소스
- arduino compiler
- stl
- Array
- list
- Deque
- queue
- LineTracer
- 아두이노
- Algorithm
- map
- priority_queue
- 라인트레이서
- directx
- 운영체제
- vector
- C언어
- set
- 수광 소자
- Stack
- 통계학
- c++
- html
- Visual Micro
- 컴퓨터 그래픽스
- WinAPI
- Arduino
- 아두이노 컴파일러
- 시스템프로그래밍
- 자료구조
Archives
- Today
- Total
Kim's Programming
STL(Standard Template Library) - Container - List 본문
리스트는 선형의 형태의 자료구조형입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 | #include<iostream> #include<list> void print(std::list<int> Target_List) { for (std::list<int>::iterator IterPos = Target_List.begin(); IterPos != Target_List.end(); ++IterPos) std::cout << *IterPos<<" "; std::cout << std::endl; } bool single_digit(const int& value) { if (value < 3) return true; else return false; } void main() { std::list<int> List; std::list<int> List_Copy; std::list<int>::iterator Iter; std::list<int>::iterator Iter2; //if List is empty return true std::cout << std::endl << "empty()" << std::endl; if (List.empty()) std::cout << "List is empty!" << std::endl; //assign(x,y) function insert y 'x' dataes std::cout << std::endl << "assign()" << std::endl; List.assign(3, 7); print(List); //push_back(x) write 'x' next to the last data in List std::cout << std::endl << "push_back()" << std::endl; List.push_back(4); print(List); List.push_back(2); print(List); List.push_back(1); print(List); //back() function return value the last data in List std::cout << std::endl << "back()" << std::endl; std::cout << List.back() << std::endl; //begin() function return Iterator that point first data in List std::cout << std::endl << "begin()" << std::endl; std::cout << *List.begin() << std::endl; //cbegin() function return const Iterator that point first data in List std::cout << std::endl << "cbegin()" << std::endl; std::cout << *List.cbegin() << std::endl; //cend() function return const Iterator that point next to the last data in List std::cout << std::endl << "cend()" << std::endl; std::cout << *(--List.cend()) << std::endl; //operator 'x1 = x2' copy x2 to x1 std::cout << std::endl << "operator '=' " << std::endl; std::cout << "Previous List ->"; print(List); std::cout << "Previous List_Copy ->"; print(List_Copy); List_Copy = List; std::cout << "After List ->"; print(List); std::cout << "After List_Copy ->"; print(List_Copy); //clear() function remove all data in List std::cout << std::endl << "clear()" << std::endl; std::cout << "Previous List_Copy ->"; print(List_Copy); List_Copy.clear(); std::cout << "After List_Copy ->"; print(List_Copy); //crbegin() function return const Iterator that point first data in List(reverse) std::cout << std::endl << "crbegin()" << std::endl; std::cout << *List.crbegin() << std::endl; //crend() function return constIterator that point next to the last data in List(reverse) std::cout << std::endl << "crend()" << std::endl; std::cout << *(--List.crend()) << std::endl; //emplace(x,y) function write 'y' in x position std::cout << std::endl << "emplace(x,y)" << std::endl; print(List); List.emplace(List.begin(),3); print(List); //emplace_back(x) function write 'x' next to last data in List std::cout << std::endl << "emplace_back(x)" << std::endl; print(List); List.emplace_back(14); print(List); //emplace_front(x) function write 'x' next to last data in List std::cout << std::endl << "emplace_front(x)" << std::endl; print(List); List.emplace_front(5); print(List); //end() function return pointer that point next to last data in List std::cout << std::endl << "end()" << std::endl; std::cout << *(--List.end()) << std::endl; //erase(x) function erase that iterator 'x' points int List std::cout << std::endl << "erase()" << std::endl; List.erase(++List.begin()); //front() function return first data in List std::cout << std::endl << "front()" << std::endl; std::cout << List.front() << std::endl; //insert(x,y) function insert y at position that Iterator x points std::cout << std::endl << "insert(x,y)" << std::endl; std::cout << "Previous List ->"; print(List); List.insert(List.end(),5); std::cout << "After List ->"; print(List); //max_size() function display list's max_size() std::cout << std::endl << "max_size()" << std::endl; std::cout<<List.max_size()<<std::endl; //sort() function sort dataes in the list in descending power std::cout << std::endl << "sort()" << std::endl; std::cout << "Previous List ->"; print(List); List.sort(); //List.sort(single_digit);//with function std::cout << "After List ->"; print(List); //x.merge(y) function merge two lists/ first, two lists be sorted with sort() function before merge //After merging, Data in list 'y' will be deleted. List_Copy.push_back(3); List_Copy.push_back(5); std::cout << std::endl << "merge()" << std::endl; std::cout << "List ->"; print(List); std::cout << "List_Copy ->"; print(List_Copy); List_Copy.sort(); List.merge(List_Copy); //List.merge(List_Copy,single_digit);//with function std::cout << "After List ->"; print(List); std::cout << "After List_Copy ->"; print(List_Copy); //pop_back() function remove the last data in the list std::cout << std::endl << "pop_back()" << std::endl; std::cout << "Previous List ->"; print(List); List.pop_back(); std::cout << "After List ->"; print(List); List.pop_back(); //pop_front() function remove the first data int the list std::cout << std::endl << "pop_front()" << std::endl; std::cout << "Previous List ->"; print(List); List.pop_front(); std::cout << "After List ->"; print(List); List.pop_back(); //push_front(x) function write 'x' int front of first data in List std::cout << std::endl << "push_front()" << std::endl; std::cout << "Previous List ->"; print(List); List.push_front(4); std::cout << "After List ->"; print(List); //rbegin() function return Iterator that point first data in List(reverse) std::cout << std::endl << "rbegin()" << std::endl; std::cout << *List.rbegin() << std::endl; //remove(x) function remove all 'x' int List std::cout << std::endl << "remove()" << std::endl; std::cout << "Previous List ->"; print(List); List.remove(5); std::cout << "After List ->"; print(List); //if remove_if() function receive true, remove that data std::cout << std::endl << "remove_if()" << std::endl; List.remove_if(single_digit); print(List); //rend() function return Iterator that point next to the last data in List(reverse) std::cout << std::endl << "rend()" << std::endl; std::cout << *(--List.rend()) << std::endl; //resize() function modify sizeof List, if it be smaller than current size, it will loss some part of data. std::cout << std::endl << "resize()" << std::endl; List.resize(10); print(List); //reverse() function reverse all data in List std::cout << std::endl << "reverse()" << std::endl; List.reverse(); print(List); //size() function display list's size std::cout << std::endl << "size()" << std::endl; std::cout << List.size() << std::endl; //splice() function List_Copy.push_back(5); List_Copy.push_back(4); List_Copy.push_back(3); List_Copy.push_front(12); List.sort(); List_Copy.sort(); std::cout << std::endl << "splice()" << std::endl; //List.splice(Iter,List_Copy);//splice(x,y,z) y에서 z가 가리키는 것을 x에 복사함 Iter = List.begin(); Iter2 = --List_Copy.end(); std::cout << "List_Cpoy (Previous) -> "; print(List_Copy); std::cout << "List(Previous) -> "; print(List); List.splice(Iter, List_Copy, Iter2);//copy data that Iter2 points in List_Copy to position that Iter points std::cout << "List (After) -> "; print(List); //x1.swap(x2) function swap x1 and x2; std::cout << std::endl << "swap()" << std::endl; std::cout << "List (Previous) -> "; print(List); std::cout << "List_Cpoy (Previous) -> "; print(List_Copy); List.swap(List_Copy); std::cout << "List (After) -> "; print(List); std::cout << "List_Cpoy (After) -> "; print(List_Copy); //In List if there are same values, unique() function integrate same values to one value std::cout << std::endl << "unique()" << std::endl; std::cout << "Previous List_Copy ->"; print(List_Copy); List_Copy.unique(); //List_Copy.unique(single_digit);//with function std::cout << "After List_Copy ->"; print(List_Copy); } | cs |
각 함수들의 기능을 알아보겠습니다.(함수 이름을 클릭하면 자세한 내용을 볼 수 있습니다)
- empty()
비어있는지 비어있지 않은지에 따라서 비어있으면 true를 값이 있으면 false를 리턴합니다. - assign(x,y)
y개의 x를 리스트에 삽입니다. - push_back(x)
데이터 'x'를 리스트의 뒤쪽에 삽입니다. - back()
리스트의 가장 마지막에 있는 데이터를 리턴합니다. - begin()
첫 데이터를 가리키는 이터레이터를 리턴합니다. - cbegin()
첫 데이터를 가리키는 const 이터레이터를 리턴합니다. - cend()
리스트의 가장 마지막에 있는 데이터 바로 다음을 가리키는 이터레이터를 리턴합니다. - Operator =
리스트끼리 대입하는 연산자 입니다. A=B 를 하면 B의 모든 데이터가 A로 복사되며 A의 이전데이터는 삭제됩니다. - clear()
리스트에 있는 모든 데이터를 지웁니다. - crbegin()
반대 리스트에서 첫 데이터를 가리키는 const 이터레이터를 리턴합니다. - crend()
반대 리스트에서 가장 마지막 리스트의 바로 다음을 가리키는 const 이터레이터를 리턴합니다. - emplace(x,y)
x위치에 y 데이터를 삽입니다. - emplace_back(x)
리스트 가장 마지막에 x를 넣습니다. - emplace_front(x)
리스트 가장 앞에 x를 너습니다. - end()
리스트에서 가장 마지막 데이터 다음을 가리키는 이터레이터를 리턴합니다. - erase(x)
이터레이터 x 가 가리키는 데이터를 삭제합니다. - front()
리스트에서 제일 앞에 있는 데이터를 리턴합니다. - insert(x,y)
이터레이터 x가 가리키고 있는 위치에 y데이터를 대입합니다. - max_size()
리스트의 최대 크기를 리턴합니다. - sort()
모든 데이터를 내림차순으로 정렬을 합니다. - x.merge(y)
x와 y를 합병합니다. 단, x와 y는 미리 sort()함수를 통해서 정렬해야하며 합병이 끝난후에는 y는 삭제됩니다.
x.merge(y,function)
x와 y를 합병하되 y중에 function함수에 부합하는 값들만 합병합니다. - pop_back()
리스트의 가장 마지막 데이터를 삭제합니다. - pop_front()
리스트의 가장 첫 데이터를 삭제합니다. - push_front(x)
리스트 제일 앞에 데이터 x를 삽입니다. - rbegin()
반대 리스트에서 첫 데이터를 가리키는 이터레이터를 리턴합니다. - remove(x)
리스트에 있는 모든 x를 삭제합니다. - remove_if(function)
function 함수에 부합하는 값을 삭제합니다. - rend()
반대 리스트에서 마지막 데이터 바로 다음을 가리키는 이터레이터를 리턴합니다. - resize(x)
리스트의 사이즈를 x로 늘립니다. int형 리스트일때 10개 보다 값이 적었으면 0으로 채워 늘리고 부족할때는 넘는것을 삭제합니다. - reverse()
리스트의 모든 데이터를 거꾸로 정렬합니다. - size()
리스트의 현재 사이즈를 리턴합니다. - splice(x,y,z)
리스트 y에서 z가 가리키는 데이터를 x가 가리키는 위치에 복사합니다. - x.swap(y)
x와 y의 내용을 교체합니다. - unique()
리스트내에서 중복되는 데이터를 하나로 합쳐서 표현합니다. 예를 들어 0 0 1 2 3 3 3 4 4 처럼 입력되어있을때는 0 1 2 3 4 처럼 수정이 됩니다.
'STL - Container' 카테고리의 다른 글
STL(Standard Template Library) - Container - Queue (0) | 2016.01.27 |
---|---|
STL(Standard Template Library) - Container - Stack (0) | 2016.01.27 |
STL(Standard Template Library) - Container - Vector (0) | 2016.01.22 |
STL(Standard Template Library) - Container - Array (0) | 2016.01.18 |
STL(Standard Template Library) (0) | 2015.12.20 |