π‘ STLμ΄λ?
STLμ νμ€ C++λΌμ΄λΈλ¬λ¦¬μ μΌλΆλΆμΌλ‘ Standard Template Libraryμ μ½μλ‘μ¨, νλ‘κ·Έλ¨μ νμν μλ£κ΅¬μ‘° & μκ³ λ¦¬μ¦μ ν νλ¦ΏμΌλ‘ μ 곡νλ λΌμ΄λΈλ¬λ¦¬μ λλ€.
π‘ 컨ν μ΄λ
컨ν μ΄λλ κ°μ νμ μ μ μ₯, κ΄λ¦¬ν λͺ©μ μΌλ‘ λ§λ€μ΄μ§ ν΄λμ€μ΄λ©°, μ΄ 7κ°μ§ 컨ν μ΄λ (vector, deque, list, set, multiset, map, multimap)λ₯Ό μ 곡ν©λλ€.
λ¨Όμ 컨ν μ΄λλ ν¬κ² λκ°μ§λ‘ λλ μ μμ΅λλ€.
1. νμ€ μνμ€ μ»¨ν μ΄λ(standard sequence container)
컨ν μ΄λ μμκ° μμ λ§μ μ½μ μμΉ(or μμ)λ₯Ό κ°μ§λ 컨ν μ΄λλ₯Ό λ§ν©λλ€.
μμλ₯Ό ν΄λΉ 컨ν μ΄λμ μ½μ νλ©΄, μ½μ λλ μμμ λ°λΌ μμμ μμΉκ° κ²°μ λκ³ λ°λμ§ μμ΅λλ€.
ex) vector, deque, list
2. νμ€ μ°κ΄ 컨ν μ΄λ(standard associative container)
μ μ₯ μμκ° μ½μ μμμ κ΄λ ¨ μμ΄ νΉμ ν μ λ ¬ κΈ°μ€μ μν΄ μ λ ¬λλ 컨ν μ΄λλ₯Ό λ§ν©λλ€.
μ¦, μμκ° μΈμ μ½μ λμλμλ μκ΄ μμ΄ μ λ ¬ κΈ°μ€(λν΄νΈ: less)μ λ°λΌ μμμ μμΉκ° κ²°μ λ©λλ€.
ex) set, multiset, map, multimap
λν, λ°μ΄ν°λ₯Ό νλμ λ©λͺ¨λ¦¬ λ¨μλ‘ μ μ₯νλμ§μ μ¬λΆμ λ°λΌ λ€μ λ κ°μ§λ‘ λλ μ μμ΅λλ€.
1. λ°°μ΄ κΈ°λ° μ»¨ν μ΄λ(array-based container)
νλμ λ©λͺ¨λ¦¬ λ¨μ(array)μ μ¬λ¬ κ°μ λ°μ΄ν°λ₯Ό μ μ₯ν©λλ€.
ex) vector, deque
2. λ Έλ κΈ°λ° μ»¨ν μ΄λ(node-based container)
νλμ λ©λͺ¨λ¦¬ λ¨μ(node)μ νλμ λ°μ΄ν°λ₯Ό μ μ₯ν©λλ€.
ex) list, set, multiset, map, multimap
π‘ λ°λ³΅μ
λ°λ³΅μλ 컨ν μ΄λμ μ μ₯λ μμλ₯Ό μν & μ κ·Όμ ν μ μλ λ°©λ² μ€ νλμ΄λ©°, ν¬μΈν°μ λΉμ·νκ² λμν©λλ€.
μκ³ λ¦¬μ¦κ³Ό 컨ν μ΄λμ μ’ λ₯μ μκ΄μμ΄ μμμ μ κ·Όν μ μλ ν° μ₯μ μ΄ μμΌλ©°, μ΄λ¬ν νΉμ§μ ν΅ν΄ μκ³ λ¦¬μ¦κ³Ό 컨ν μ΄λλ₯Ό μ΄μ΄μ£Όλ μΈν°νμ΄μ€ μν μ νλ€λ κ²μ μ μ μμ΅λλ€.
λ°λ³΅μμ νΉμ§
1. * μ°μ°μλ₯Ό ν΅ν΄ 컨ν μ΄λ λ΄λΆμ μμ(κ°μ²΄)λ₯Ό κ°λ¦¬ν€κ³ μ κ·Όν μ μμ΅λλ€.
2. ++ μ°μ°μ, !=μ == μ°μ°μλ₯Ό ν΅ν΄ λ€μ μμλ‘ μ΄λνκ³ λͺ¨λ μμλ₯Ό μνν μ μμ΅λλ€.
λ©€λ² ν¨μ begin()λ μμ°¨μ΄μ μμμ κ°λ¦¬ν€λ λ°λ³΅μ λ°ννλ©°, end()λ μμ°¨μ΄μ λμ κ°λ¦¬ν€λ λ°λ³΅μλ₯Ό λ°νν©λλ€.
μ¬κΈ°μ μ£Όμν μ μ end()κ° μ μΌ λ§μ§λ§ μμλ₯Ό κ°λ¦¬ν€λ κ²μ΄ μλλΌλ κ²!!!!!μ λλ€.
end()λ λ§μ§λ§ μμλ₯Ό νλ μ§λ μμΉλ₯Ό λ°νν©λλ€.
beginκ³Ό endλ₯Ό ꡬκ°(range)λΌκ³ νλλ°, λ°κ° ꡬκ°(half-open range)λ₯Ό μ¬μ©νκΈ° λλ¬Έμ [begin, end)μ²λΌ νκΈ°ν©λλ€.
μ¦, μμ°¨μ΄μ μ€μ μμλ beginλΆν° end μ΄μ κΉμ§ μλ κ²μ λλ€.
λ§μ½ μμ°¨μ΄ [p, q)μμ pμ qκ° κ°λ€λ©΄ ν΄λΉ μμ°¨μ΄μλ μμκ° μλ€κ³ νλ¨ ν μ μμ΅λλ€.
* μ°μ°μ (ex: *iter)λ₯Ό ν΅ν΄μ μ κ·Όν μ μκ³ , ++λ₯Ό ν΅ν΄ λ€μ μμλ‘ μ΄λν μ μμΌλ©°, ==μ != μ°μ°μλ‘ μμ°¨μ΄μ λμΈμ§ νμΈ ν μ μμ΅λλ€.
λ°λ³΅μλ νμ©λκ° λκ³ λ΄μ©μ΄ λ§κΈ° λλ¬Έμ μ΄νμ λ°λ³΅μλ§μ λ€λ€λ³Ό μμ μ λλ€.
π‘ μκ³ λ¦¬μ¦
STLμ μμ°¨μ΄μ μμλ₯Ό μ‘°μ¬, λ³κ²½, κ΄λ¦¬, μ²λ¦¬ν λͺ©μ μΌλ‘ μκ³ λ¦¬μ¦μ΄λΌλ κ΅¬μ± μμλ₯Ό μ 곡ν©λλ€.
STL μκ³ λ¦¬μ¦μ 7κ°μ§μ λ²μ£Όλ‘ λΆλ₯ν©λλ€.
1. non-modifying algorithms (μμλ₯Ό μμ νμ§ μλ μκ³ λ¦¬μ¦)
2. modifying algorithms (μμλ₯Ό μμ νλ μκ³ λ¦¬μ¦)
3. removing algorithms (μ κ±° μκ³ λ¦¬μ¦)
4. mutating algorithms (λ³κ²½ μκ³ λ¦¬μ¦)
5. sorting algorithms (μ λ ¬ μκ³ λ¦¬μ¦)
6. sorted range algorithms (μ λ ¬λ λ²μ μκ³ λ¦¬μ¦)
7. numeric algorithms (μμΉ μκ³ λ¦¬μ¦)
STL μκ³ λ¦¬μ¦ λν λ°λ³΅μμ λ§μ°¬κ°μ§λ‘ 컨ν μ΄λλ μμ νμ μ μκ΄ μμ΄ μ¬μ©ν μ μμ΅λλ€.
μ°Έκ³ μ± : λλ₯Ό μκ·Ήνλ C++ STL