- Today
- Total
- PS
- μλ°μμ μ
- CS
- λ°±μλ
- java
- μ‘Έμ μν
- MST
- λ€μ΅μ€νΈλΌ
- database
- ꡬν
- μμμ λ ¬
- 벨λ§ν¬λ
- spring
- λ¬Έλ²
- 그리λ
- BFS
- μλ°
- dp
- λ°μ΄ν°λ² μ΄μ€
- μΈν΄
- leetcode
- pytorch
- νλ‘κ·Έλλ¨Έμ€
- OOP
- λ°±μ€
- Graph
- array
- tree
- μλ£κ΅¬μ‘°
- Algorithm
Partially Committed
[c++]Associate container λ³Έλ¬Έ
νλΆμμ΄ κ³΅λΆ κΈ°λ‘ μ°¨μμμ μμ±ν κΈμ λλ€. μΈμ λ μ§μ μ νμμ λλ€.
Associate container
key - value λ₯Ό ν΅ν΄μ μλ‘ κ΄κ³μλ κ°μ λ¬Άμ΄ μ μ₯νλ 컨ν μ΄λλ₯Ό λ§νλ€. key κ°μ ν΅ν΄μ κ°κ°μ record μ λΉ λ₯΄κ² μ κ·Όμ΄ κ°λ₯νμ§λ§ specific ν rule μ μν΄ sorting λκΈ° λλ¬Έμ insert ν key κ°μ μμΉλ₯Ό μ§μ ν μ μλ€. balanced binary search tree λ hash function μ μ¬μ©νμ¬ κ΅¬νλλ€κ³ νλ€.
std::set
balanced binary tree λ‘ κ΅¬νλμ΄ μλ μ λ ¬λ μ§ν©μ ν¬ν¨νλ associate container μ΄λ€.
μ€λ³΅λλ μμλ₯Ό νμ©νμ§ μλλ€. μ€λ¦μ°¨μμΌλ‘ μ λ ¬λ μμΉμ μμλ₯Ό μ½μ νκΈ° λλ¬Έμ search μλκ° λ§€μ° λΉ¨λΌμ
λ°μ΄ν°μ μ‘΄μ¬ μ 무λ₯Ό νμ νλ λ°μ ν¨μ¨μ μΈ μ»¨ν μ΄λμ΄λ€.
void main()
{
set<int> s;
s.insert(5);
s.insert(4);
s.insert(3);
s.insert(2);
s.insert(1); // insert λ₯Ό ν΅ν΄μ μλμ μΌλ‘ μ λ ¬λλ€.
cout << "s μ size = " << s.size() << '\n';
// set s μ λͺ¨λ μμλ₯Ό μΆλ ₯νκΈ°
for (set<int>::iterator iter = s.begin(); iter != s.end(); iter++)
cout << *iter << ' ';
cout << '\n';
// set μμ νΉμ μμλ₯Ό μ°ΎκΈ°
std::set<int>::iterator iter = s.find(3);
if (iter != s.end())
cout << "found \n";
else
cout << "something wrong \n";
// νΉμ μμλ₯Ό μμ νκΈ°
s.erase(3);
for (set<int>::iterator iter = s.begin(); iter != s.end(); iter++)
cout << *iter << ' ';
cout << '\n';
}
std::multiset
multiset μ set κ³Όλ λ¬λ¦¬ key λ₯Ό μ€λ³΅λκ² μ»¨ν μ΄λμ μ μ₯ν μ μλ€. μΈμλ set κ³Ό λμΌνλ€. κ·Έλ¬λ―λ‘ set μ μ¬μ©νκ³ μ νλλ° key μ μ€λ³΅μ΄ νμν μν©μ΄λΌλ©΄ multiset μ νμ©ν μ μλ€. multiset μ ν€μ μ€λ³΅μ΄ νμ©λκΈ° λλ¬Έμ κ°μ κ°μ μ¬λ¬κ° μ μ₯ν μ μλ€.
void main()
{
multiset<int> s;
s.insert(5);
s.insert(4);
s.insert(3);
s.insert(2);
s.insert(1); // insert λ₯Ό ν΅ν΄μ μλμ μΌλ‘ μ λ ¬λλ€.
s.insert(4); // μ€λ³΅λ μμ μ½μ
cout << "s μ size = " << s.size() << '\n';
// set s μ λͺ¨λ μμλ₯Ό μΆλ ₯νκΈ°
for (set<int>::iterator iter = s.begin(); iter != s.end(); iter++)
cout << *iter << ' ';
cout << '\n';
// set μμ νΉμ μμλ₯Ό μ°ΎκΈ°
std::set<int>::iterator iter = s.find(3);
if (iter != s.end())
cout << "found \n";
else
cout << "something wrong \n";
// νΉμ μμλ₯Ό μμ νκΈ°
s.erase(3);
for (set<int>::iterator iter = s.begin(); iter != s.end(); iter++)
cout << *iter << ' ';
cout << '\n';
}
std::map & std::multimap
map μ key - value λ₯Ό pair λ‘ κ°μ§λ associate container μ΄λ€. set μ μμμ κ°μΌλ‘ key νλλ§μ μ μ₯ν μ μμ§λ§, map μ <key , value> μ κ°μ΄ pair λ‘ μ μ₯νλ©° μ€λ³΅μΌλ‘ μ μ₯λμ§ μλλ€. κ·Έλ¬λ―λ‘ νλμ key μλ νλμ value λ§ μ§μ§μ΄ μλ€.
void main()
{
map<string, int> m;
m.insert(make_pair("first", 1));
m.insert(pair<string, int>("second", 2));
m["three"] = 3;
for (map<string, int>::iterator iter = m.begin(); iter != m.end(); iter++)
cout << iter->first << ' ' << iter->second << '\n';
}
std::multimap μ κ²½μ°λ key μ μ€λ³΅μ νμ©νλ€λ μ μΈμλ map κ³Ό λμΌνλ€.
unordered associate container
unordered associated conatiner μ μ λ ¬λμ§ μκ³ λλ€νκ² μ μ₯λλ©°, hash function κΈ°λ°μΌλ‘ λμνλ€λ κ²μ΄ μ°¨μ΄μ μ΄λ€. μ΄μλ°λΌ μμμ μΆκ°, μμ , κ²μ μλκ° O(1) μΌλ‘ λμνκΈ° λλ¬Έμ κ΅μ₯ν λΉ λ₯΄λ€κ³ ν μ μλ€.
References
1. https://blog.itsforme.dev/stl/
3. https://blankspace-dev.tistory.com/347
4. https://min-zero.tistory.com/79
'π₯ Algorithm || λ¬Έμ νμ΄ > PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] ν¬λ μΈ μΈνλ½κΈ° κ²μ (0) | 2022.07.01 |
---|---|
[2020 μΉ΄μΉ΄μ€ μΈν΄μ] ν€ν¨λ λλ₯΄κΈ° (0) | 2022.06.29 |
[2021 μΉ΄μΉ΄μ€ μ±μ©μ°κ³ν μΈν΄μ] μ«μ λ¬Έμμ΄κ³Ό μλ¨μ΄ (0) | 2022.06.28 |
[2021 KAKAO BLIND RECRUITMENT] μ κ· μμ΄λ μΆμ² (0) | 2022.06.28 |
[2022 KAKAO BLIND RECRUITMENT] μ κ³ κ²°κ³Όλ°κΈ° (0) | 2022.06.26 |