0. STLμ΄λ λκ°μ?
Standard Template Libraryλ‘ C++μ ν νλ¦Ώμ μ¬μ©νμ¬ νμ€μΌλ‘ μ 리λ λΌμ΄λΈλ¬λ¦¬μ λλ€.
λ°λ³΅μ/컨ν μ΄λ/μκ³ λ¦¬μ¦/ν¨μ κ°μ²΄λ±μ λΌμ΄λΈλ¬λ¦¬λ‘ ꡬμ±λ©λλ€.
1. μνμ€ μ»¨ν μ΄λ, μ°κ΄ 컨ν μ΄λ, μ΄λν° μ»¨ν μ΄λμ λν΄μ μ€λͺ ν΄μ£ΌμΈμ.
(μλ£μ κ΅¬μ‘°λ‘ κ΅¬λΆμ νλ©΄…)
μνμ€ μ»¨ν μ΄λλ μλ£λ₯Ό μ λ ₯ν μμλλ‘ μ μ₯νκΈ° λλ¬Έμ μ μ₯ κ²μ μκ³ λ¦¬μ¦μ΄λΌκ³ λΆλ¦½λλ€. λ§μ§ μμ μμ μλ£/κ²μμλκ° μ€μνμ§ μμ κ²½μ°μ μ¬μ©λλ©° vector, list, string, dequueλ±μ΄ μ΄μ ν΄λΉν©λλ€.
μ°κ΄ 컨ν μ΄λλ μΌμ ν κ·μΉμ λ°λΌ μλ£λ₯Ό μ‘°μ§ννμ¬ μ μ₯νλ κ²μ λ§ν©λλ€. μλ£λ₯Ό μ λ ¬νμ¬ μ μ₯νκΈ° λλ¬Έμ κ²μμ μ 리νκ³ λ§μ μμ μλ£/λΉ λ₯Έ κ²μμ΄ μ€μν λ μ¬μ©ν©λλ€. λνμ μΌλ‘ map, setμ΄ κ·Έμ ν΄λΉν©λλ€.
μ΄λν° μ»¨ν μ΄λλ μνμ€ μ»¨ν μ΄λλ₯Ό λ³νμμΌ μ€ν, ν, μ°μ μμ ν ννλ‘ μ μ₯νλ κ²μ λ§ν©λλ€.
(λ©λͺ¨λ¦¬ μμμ μλ£λ₯Ό ꡬμ±νλ ννλ‘ κ΅¬λΆμ νλ©΄)
contuquius-Memoryμ°μλ©λͺ¨λ¦¬: λμ ν λΉλ νλμ λ©λͺ¨λ¦¬ λ¨μμ λ°μ΄ν° μμλ₯Ό μ μ₯
node-basedλ ΈλκΈ°λ°: λμ ν λΉλ νλμ λ©λͺ¨λ¦¬ λ¨μμ νλμ μμλ§ μ μ₯ν©λλ€. ν¬μΈν°λ‘ μ΄λ₯Ό μ°κ²½ν©λλ€. μλ£ μΆκ° μμ μ μ 리νλ©° μμ°¨μ μ κ·Όλ§ κ°λ₯ν΄ λλ€ μ κ·Όμ΄ λΆκ°λ₯ ν©λλ€.
2. 컨ν μ΄λκ° λλ°μ?
κ°μ νμ μ μ¬λ¬ κ°μ²΄λ₯Ό μ μ₯νλ μΌμ’ μ μ§ν©μ΄λΌκ³ ν μ μμ΅λλ€. 컨ν μ΄λλ ν΄λμ€ ν νλ¦ΏμΌλ‘ 컨ν μ΄λ λ³λ³μ μ μΈν λ 컨ν μ΄λμ ν¬ν¨ν μμμ νμ μ λͺ μν μ μμ΅λλ€.
3. μ΄ν°λ μ΄ν°λ?
λ°λ³΅μλ 컨ν μ΄λμ μ μ₯λ μμλ₯Ό μννκ³ μ κ·Όνλ μΌλ°νλ λ°©λ²μ μ 곡ν©λλ€. λ°λ³΅μλ 컨ν μ΄λμ μκ³ λ¦¬μ¦μ΄ νλλ‘ λμνκ² λ¬Άμ΄μ£Όλ μΈν°νμ΄μ€ μν μ ν©λλ€. μ΄ λ°λ³΅μ λμ μκ³ λ¦¬μ¦μ νΉμ 컨ν μ΄λμ μ’ μμ μ΄μ§ μκ³ λ 립μ μ΄λ©΄μλ μΈμ λ μ§ μ»¨ν μ΄λμ κ²°ν©νμ¬ λμ ν μ μμ΅λλ€.
4. array, vector, list, forward_list, queue, deque, stack, map, setμ λν΄μ μ€λͺ νμμ€.
array (λΆκ°λ³λ°°μ΄) | vector (κ°λ³λ°°μ΄) | list | |
μ₯μ | - μ μ μμ μλ£μ μ 리 | - μ μ μμ μλ£μ μ 리 - ν¬κΈ° λ³κ²½ κ°λ₯ - μμ°¨ μ κ·Ό κ°λ₯ - λλ€ μμΈμ€ κ°λ₯ |
- μ€κ° μ½μ
/μμ κ°λ₯ - ν¬κΈ° λ³κ²½ κ°λ₯ - μ μ μμ μλ£μ μ 리 - μμ°¨ μ κ·Ό κ°λ₯ |
λ¨μ | - ν¬κΈ° λ³κ²½ λΆκ° | - μ€κ° μ½μ
μμ λΆκ°λ₯ - κ²μ λλ¦Ό - λ§μ μμ μλ£ λΆλ¦¬ |
- λ§μ μμ μλ£μ λΆλ¦¬ - λλ€ μμΈμ€ λΆκ°λ₯ - κ²μ λλ¦Ό |
νΉμ§ | - reserveμ λλ‘ μνκ³ μ€μκ° puch_backνλ©΄ μλλ€. - clearκ° μ λλ‘λ clearκ° μλ - λ²μμΈ μ°Έμ‘°νμ§ λ§ κ² |
- κΈ°λ₯μ μΌλ‘ listκ° μ±λ₯μ μΌλ‘ forward_listκ° κ°λ³κ³ μ’μ |
map | set | ||
μ₯μ | - λ§μ μμ μλ£μ μ 리 - κ²μ μλκ° λΉ λ¦ |
- λ§μ μμ μλ£μ μ 리 - κ²μ μλκ° λΉ λ¦ |
|
λ¨μ | - μ μ μμ μ€λ²ν€λλ‘ μΈν΄ μν΄ | - μ μ μμ μ€λ²ν€λλ‘ μΈν΄ μν΄ | |
νΉμ§ | - μ΄μ§νμνΈλ¦¬κΈ°λ°(λ λλΈλνΈλ¦¬) - μλμ λ ¬ - keyμ valueλ‘ pairνν - κ°μ λ£μ λ μ΅λν insert μ¬μ© |
- μ΄μ§νμνΈλ¦¬κΈ°λ° - μλμ λ ¬ - keyκ° κ³§ value |
- λλμμΈμ€μ κ°μ λ§: μμ μ κ·Ό, λλ€ μ κ·Ό, λΉμμ°¨μ μ κ·Ό, μ§μ μ κ·Ό
5. Binary Search Treeμ λν΄ μ€λͺ νμΈμ.
μ΄μ§νμνΈλ¦¬λ λ°μ΄ν° μ½μ . μμ , νμ λ±μ΄ μμ£Ό λ°μνλ κ²½μ°μ ν¨μ¨μ μΈ κ΅¬μ‘°λ‘, μ΄μ§ νΈλ¦¬ μ΄λ©΄μ κ°μ κ°μ κ°λ λ Έλκ° μμ΄μΌν©λλ€. μΌμͺ½ μλΈ νΈλ¦¬μ μλ λͺ¨λ λ°μ΄ν°λ νμ¬ λ Έλμ κ°λ³΄λ€ μκ³ , μ€λ₯Έμͺ½ μλΈ νΈλ¦¬μ μλ λͺ¨λ λ Έλμ λ°μ΄ν°λ νμ¬ λ Έλμ κ°λ³΄λ€ ν¬λ€λ νΉμ§μ΄ μμ΅λλ€. μ¦, μ λ ¬μ΄ λμ΄μμ΄μΌ ν©λλ€.
6. μ νꡬ쑰μ λΉμ νκ΅¬μ‘°λ‘ λλ μ£ΌμΈμ
μ ν ꡬ쑰: 리μ€νΈ, μ€ν, ν, λ°ν,
λΉμ ν ꡬ쑰: νΈλ¦¬, κ·Έλν
7. νΈλ¦¬μ κ·Έλνμ μ°¨μ΄μ μ 무μμΈκ°μ?
νΈλ¦¬: νΈλ¦¬λ κ·Έλνμ νΉλ³ν μΌμ΄μ€μ΄λ©° ‘μ΅μ μ°κ²° νΈλ¦¬’λΌκ³ λΆλ¦½λλ€. λκ°μ μ μ μ¬μ΄μ λ°λμ 1κ°μ κ²½λ‘λ§ κ°μ§λ©° loopλ circuit self-loopλ μμ΅λλ€. ν κ°μ λ£¨νΈ λ Έλλ§μ΄ μ‘΄μ¬νλ©° λͺ¨λ μμ λ Έλλ ν κ°μ λΆλͺ¨λ Έλλ§ κ°μ§λλ€. νΈλ¦¬λ DAG(Directed Acyclic Graphs)μ ν μ’ λ₯λ‘ DAGλ μ¬μ΄ν΄μ΄ μλ λ°©ν₯ κ·Έλνλ₯Ό λ§ν©λλ€.
νΈλ¦¬λ μ΄μ§νΈλ¦¬, μ΄μ§ νμ νΈλ¦¬ AVLνΈλ¦¬, νλ±μ΄ μμ΅λλ€.
κ°μ μ νμ μ μ μ κ°μ – 1 λ§νΌμ κ°μ§λλ€.
νΈλ¦¬λ κ³μΈ΅ λͺ¨λΈμ λλ€.
κ·Έλνλ: 2 κ°μ΄μμ κ²½λ‘κ° κ°λ₯νλ©° λ Έλ μ¬μ΄μ 무방ν₯/μλ°©ν₯ κ²½λ‘λ₯Ό κ°μ§ μ μμ΅λλ€. self/loop/circuitλͺ¨λκ°λ₯νλ©° 루νΈλ ΈλλΌλ κ°λ μ΄ μμ΅λλ€. κ·Έλνμ μνλ DFS. BFSλ‘ μ΄λ£¨μ΄μ§λ©° κ·Έλνλ λ€νΈμν¬ λͺ¨λΈμ λλ€. λΆλͺ¨μ μμκ΄κ³νλ κ³λ μ΄ μμ΅λλ€.
8. μ λ ¬
κΈ°μ μ λ ¬ -> ν΅ μ λ ¬ -> λ³ν© μ λ ¬ = ν μ λ ¬ -> μ μ λ ¬ -> μ½μ μ λ ¬ -> μ ν μ λ ¬ -> λ²λΈ μ λ ¬
9. mapμ λ λλΈλνΈλ¦¬λ‘ λ§λ€μ΄μ Έ μλλ° λ λλΈλνΈλ¦¬λ?
λ λ-λΈλ νΈλ¦¬(Red-black tree)λ μκ° κ· ν μ΄μ§ νμ νΈλ¦¬(self-balancing binary search tree)λ‘μ¨, λνμ μΌλ‘λ μ°κ΄ λ°°μ΄ λ±μ ꡬννλ λ° μ°μ΄λ μλ£κ΅¬μ‘°λ€. 1978λ λ μ€ κ·λ°μ€(Leo J. Guibas)μ λ‘λ²νΈ μΈμ§μ μ΄ 1972λ 루λν λ°μ΄μ΄κ° μ°½μν "λμΉν μ΄μ§ B-νΈλ¦¬"λ₯Ό λ°μ μμΌ λ§λ€μλ€. λ λ-λΈλ νΈλ¦¬λ 볡μ‘ν μλ£κ΅¬μ‘°μ§λ§, μ€ μ¬μ©μμ ν¨μ¨μ μ΄κ³ , μ΅μ μ κ²½μ°μλ μλΉν μ°μν μ€ν μκ°μ 보μΈλ€: νΈλ¦¬μ nκ°μ μμκ° μμ λ O(log n)μ μκ°λ³΅μ‘λλ‘ μ½μ , μμ , κ²μμ ν μ μλ€. (μΆμ : μν€λ°±κ³Ό)
'ππ»ββοΈ pinko > β½ κ²μνμ¬' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ νλ κ² λ³΄λ€ λ«κ² μ§
ν¬μ€ν μ΄ μ’μλ€λ©΄ "μ’μμβ€οΈ" λλ "ꡬλ ππ»" ν΄μ£ΌμΈμ!