vector<T>
νμ Tλ₯Ό μμλ‘ κ°λ μμ°¨ 컨ν μ΄λλ‘ νμ¬ ν λΉλ μ©λ(capacity)μ μ΄κ³Όνλ μ¦μ λ λ§μ μμλ₯Ό μ μ₯ν μ μλ μΆκ° 곡κ°μ΄ μλμΌλ‘ ν λΉλλ€. 컨ν μ΄λμ λμμ μμλ₯Ό μΆκ° λλ μμ ν λλ§ ν¨μ¨μ μ΄λ€.
- μ©λ/ν¬κΈ°: capacity(), reserve(), size(), resize(), empty()
- μμ μ κ·Ό: [], at(), front(), back()
- μμ μΆκ°: push_back(), emplace_back(), emplace(), insert()
- μμ μμ : clear(), pop_back(), erase()
deque<T>
νμ Tμ μμλ€μ deque(double-ended queue)λ‘ μ μ₯νλ 컨ν μ΄λμ΄λ€. μμ°¨μ΄μ μμμ΄λ λμ κ°μ²΄λ€μ ν¨μ¨μ μΌλ‘ μΆκ°νκ±°λ μμ ν μ μλ€. μμλ₯Ό μ μ₯νλ λ°©μ λλ¬Έμ ν¬κΈ°(size)μ μ©λμ΄(capacity) νμ κ°λ€.
- μ©λ/ν¬κΈ°: capacity(), size(), resize(), empty()
- μμ μ κ·Ό: [], at(), front(), back()
- μμ μΆκ°: push_back(), push_front(), emplace_back(), emplace_front(), emplace(), insert()
- μμ μμ : clear(), pop_back(), pop_front(), erase()
list<T>
νμ T κ°μ²΄μ μ΄μ€ μ°κ²° 리μ€νΈλ₯Ό ꡬνν 컨ν μ΄λμ΄λ€. vector, dequeμ λΉκ΅νλ©΄ μμ°¨μ΄μ μ΄λ μμΉλΌλ μμ μκ°μ μμλ₯Ό μ½μ λλ μμ ν μ μλ€λ μ₯μ μ΄ μλ€. νμ§λ§ νΉμ μμΉμ μλ μμμ λ°λ‘ μ κ·Όν μ μμ΄ μ²μλΆν° λ§μ§λ§ μμκΉμ§ μνν΄μΌ νλ€λ λ¨μ μ΄ μλ€. λλ€ μμΈμ€ λ°λ³΅μλ₯Ό μ¬μ©ν μ μκ³ μλ°©ν₯ λ°λ³΅μλ₯Ό μ¬μ©νλ€. μλ°©ν₯ λ°λ³΅μμλ μ μλ₯Ό λνκ±°λ λΊ μ μμΌλ©° ++μ΄λ --λ‘λ§ μμ κ°λ₯νλ€. λλ iterator ν€λμ advance() ν¨μλ₯Ό μ΄μ©ν μ μλ€. ( ex. advance(l.begin(), 10) )
- μ©λ/ν¬κΈ°: capacity(), size(), resize(), empty()
- μμ μ κ·Ό: [], at(), front(), back()
- μμ μΆκ°: push_back(), push_front(), emplace_back(), emplace_front(), emplace(), insert()
- μμ μμ : clear(), pop_back(), pop_front(), erase(), remove()
μ΄κΈ°ν: vector, deque, list λͺ¨λ μλ λ°©λ²μΌλ‘ μ΄κΈ°ν κ°λ₯
vector<int> v (n); // nκ°μ μμλ₯Ό κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°ν
vector<int> v (n, x); // nκ°μ μμλ₯Ό xκ°μΌλ‘ μ΄κΈ°ν
vector<int> v {1, 2, 3, 4, 5}; // μ΄κΈ°ν 리μ€νΈλ‘ μ΄κΈ°ν
vector<int> v {v2}; // v2μ 볡μ¬λ³Έ
vector<int> v {v2.begin(), v2.end()}; // λ°λ³΅μ λ²μλ₯Ό μ§μ ν΄ μ΄κΈ°ν
** uniform initialization (C++11~): https://modoocode.com/286
resize(): vector, deque, list λͺ¨λ μλ λ°©λ²μΌλ‘ resize κ°λ₯
v.resize(n); // sizeλ₯Ό nμΌλ‘ λ³κ²½νλ, μΆκ°λλ μμλ κΈ°λ³Έκ°
v.resize(n, x); // sizeλ₯Ό nμΌλ‘ λ³κ²½νλ, μΆκ°λλ μμλ xκ°
vector<int> v {1, 2, 3};
v.resize(5); // {1, 2, 3, 0, 0}
v.resize(7, 100); // {1, 2, 3, 0, 0, 100, 100}
v.resize(6); // {1, 2, 3, 0, 0, 100}
insert(): vector, deque, list λͺ¨λ μλ λ°©λ²μΌλ‘ insert κ°λ₯
// λ°λ³΅μ pκ° κ°λ¦¬ν€λ μμ μμ
v.insert(p, x); // x μ½μ
v.insert(p, n, x); // nκ°μ x μ½μ
v.insert(p, b, e); // λ°λ³΅μ λ²μ [b, e)λ₯Ό μ½μ
vector<int> v = {1, 2, 3}; // {1, 2, 3}
v.insert(++v.begin(), 100); // {1, 100, 2, 3}
v.insert(++v.begin(), 2, 200); // {1, 200, 200, 100, 2, 3}
v.insert(--v.end(), v2.begin(), v2.end()); // {1, 200, 200, 100, 2, ..., 3}
vectorλ λμ΄ μλ μμΉμ μ½μ νλ©΄ μ€λ²ν€λκ° λ°μνλ€. μ½μ μμΉ λ€μ μλ λͺ¨λ μμλ μ μμλ₯Ό μν 곡κ°μ λ§λ€κΈ° μν΄ μ΄λν΄μΌ νλ€. μ½μ μ΄νμ μμμ κ°μκ° ν λΉλ μ©λ(capacity)λ³΄λ€ ν¬λ€λ©΄ λ©λͺ¨λ¦¬λ λ ν λΉν΄μΌ νλ€. deque μμ μ²μμ΄λ λμ΄ μλ μμΉμ μ½μ νλ©΄ μ€λ²ν€λκ° λ°μνκ³ λͺ¨λ λ°λ³΅μκ° λ¬΄ν¨νλλ€. κ·Έλ¬λ listλ μμλ₯Ό μ½μ νλ€κ³ κΈ°μ‘΄ μμλ₯Ό μ΄λν νμ μμ΄ ν¬μΈν°λ§ λ°κΏμ£Όλ©΄ λλ€. μμ μκ°μ μ²λ¦¬ν μ μμΌλ©° λ°λ³΅μλ 무ν¨νλμ§ μλλ€. listμμ λ°λ³΅μκ° λ¬΄ν¨νλ λλ ν΄λΉ λ°λ³΅μκ° κ°λ¦¬ν€λ μμκ° μμ λμμ λ λΏμ΄λ€.
erase(): vector, deque, list λͺ¨λ μλ λ°©λ²μΌλ‘ erase κ°λ₯
v.erase(p); // λ°λ³΅μ pκ° κ°λ¦¬ν€λ μμλ₯Ό μμ νκ³ κ·Έ λ€μ μμλ₯Ό λ°ν
v.erase(b, e); // λ°λ³΅μ λ²μ [b, e)μ μμλ₯Ό μμ νκ³ κ·Έ λ€μ μμλ₯Ό λ°ν
vector<int> v {1, 2, 3, 4, 5}; // {1, 2, 3, 4, 5}
v.erase(++v.begin()); // {1, 3, 4, 5}
v.erase(++v.begin(), --v.end()) // {1, 5}
vectorλ eraseλ‘ ν¬κΈ°(size)κ° λ³κ²½λμ΄λ μ©λ(capacity)λ λ³κ²½λμ§ μλλ€. listλ μμ μμ μκ°μ μμλ₯Ό μμ ν μ μλ€.
algorithm ν€λμ μ μ©ν ν¨μ
swap(), find(), copy(), sort(), reverse()
swap(Tx, Ty); // κ°μ²΄ Txμ κ°μ²΄ Tyλ₯Ό swap
find(b, e, x); // λ°λ³΅μ κ΅¬κ° [b, e)μμ xλ₯Ό μ°Ύμ κ°λ¦¬ν€λ λ°λ³΅μλ₯Ό λ°ν
copy(sb, se, db); // srcμ λ°λ³΅μ κ΅¬κ° [sb, se)λ₯Ό dstμ λ°λ³΅μ dbκ° κ°λ¦¬ν€λ κ³³λΆν° 볡μ¬
sort(b, e); // λ°λ³΅μ κ΅¬κ° [b, e)λ₯Ό κΈ°λ³Έ μ€λ¦μ°¨μμΌλ‘ μ λ ¬
sort(b, e, comp); // λ°λ³΅μ κ΅¬κ° [b, e)λ₯Ό compμ λ°λΌ μ λ ¬ (compκ° greater<>()μΌ κ²½μ° λ΄λ¦Όμ°¨μ μ λ ¬)
reverse(b, e); // λ°λ³΅μ κ΅¬κ° [b, e)μ μμλ₯Ό λ€λ°κΏ
** remove μΆκ°: http://egloos.zum.com/h2ostudio/v/4343561
removeλ μ΄λ€ κ°μ κ°μ§λ μμλ₯Ό μμ ν΄μ£Όμ§λ§, μ§μ§λ‘ μμ νμ§ μλλ€.
listμ sort()
sort()λ λλ€ μμΈμ€ λ°λ³΅μκ° νμνλ―λ‘ listμλ μ¬μ©ν μ μλ€. λμ list ν νλ¦Ώμ sort() ν¨μκ° λ³λλ‘ μ μλμ΄ μλ€. λ λ²μ μ΄ μλλ° μΈμκ° μλ λ²μ μ μμλ₯Ό μ€λ¦μ°¨μμΌλ‘ μ λ ¬νλ©°, μΈμκ° μλ λ²μ μ λΉκ΅λ₯Ό μν λλ€ ννμμ΄λ ν¨μ κ°μ²΄λ₯Ό μΈμλ‘ λ°λλ€.
l.sort()
l.sort(greater<>());
Reference: C++14 STL μ² μ μ λ¬Έ
'Problem Solving > C++ μ 리' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
C++ specificν λ΄μ©λ€ μ 리 (C C++ μ°¨μ΄) (0) | 2020.06.30 |
---|---|
λ²μ κΈ°λ° ν¬λ¬Έ (Range-based for loop) (0) | 2020.06.01 |
C++14 STL μ² μ μ λ¬Έ) vector (0) | 2020.05.20 |
C++ #4: preprocessor directives (0) | 2019.12.07 |
C++ #3: call by value, address, reference (0) | 2019.12.06 |
λκΈ