SW์ค์ฌ๋ํ ์ฌ์ ๋จ์์ CodeTree์ ํจ๊ป ์ค์ํ ์ฝ๋ฉํ ์คํธ ๋๋น ์บ ํ์ ์ฐธ์ฌํ์ฌ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค.
* ์ฐธ๊ณ : python๊ณผ c++, java ๋ฑ ์ธ์ด๋ณ๋ก ์ค๋ช ์ด ๋ค๋ฅธ ๋ถ๋ถ์ด ์กด์ฌํฉ๋๋ค! ํ์๋ c++์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
unordered_map STL
C++์์๋ unordered_map์ด๋ผ๋ STL์ ์ด์ฉํ ์ ์์ต๋๋ค.
unordered_map์ HashMap ์๋ฃ๊ตฌ์กฐ๋ก ๋์ด์์ผ๋ฉฐ, HashMap์ ๊ฒฝ์ฐ ํด์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ค์ ๊ด๋ฆฌํด์ฃผ๋ ์๋ฃ๊ตฌ์กฐ ์ ๋๋ค. HashMap์ (key, value) ์ ํํ๋ก ๋ค์ด๊ฐ ์์ด, key์ ๊ทธ์ ๋ฐ๋ฅธ value ๊ฐ์ ๋์์ ์ ์ฅํ๋ ํํ์ ๋๋ค.
๋ฐ๋ผ์ HashMap์ ์ฝ์ , ์ญ์ , ํ์ ๋ฑ ๋ชจ๋ ํจ์์ ์๊ฐ๋ณต์ก๋๊ฐ ์ ๋ถ ์ ๋๋ค.
unordered_map์ map๋ณด๋ค ์๋๊ฐ ๋น ๋ฅด์ง๋ง, ๊ฐ ์์ฒด์๋ง ๊ด์ฌ์ด ์์ง ๊ทธ ์์์๋ ์ ํ ๊ด์ฌ์ด ์๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
#include <unordered_map> ํค๋์, unordered_map<K, V> name; ํํ์ ์ ์ธ์ด ํ์ํฉ๋๋ค.
(K๋ key, V๋ value ์ ๋๋ค.)
unordered_map์ ์๋ std::unordered_map์ด์ง๋ง
using namespace std; ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ธํ ์ํ๋ผ๊ณ ๊ฐ์ ํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ์์ต๋๋ค.
์ ์๋ฅผ ๊ด๋ฆฌํ unordered_map์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ธํด ๋ณผ ์ ์์ต๋๋ค.
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_map<int, int> m;
return 0;
}
unordered_map์ ์ด์ฉํ ๋ ์์ฃผ ์ฌ์ฉ๋๋ ๊ฒ์ ๋ค์ 3๊ฐ์ง ์ ๋๋ค. unordered_map<int, int> m;๋ก ์ ์ธ๋์ด ์ฌ์ฉ๋ ๋๋ฅผ ์๋ก ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค.
- m.insert({K, V}) ํน์ m[K] = V
hashmap์ ์(K, V)๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ง์น ๋ฐฐ์ด์ ๊ฐ์ ๋ฃ๋ฏ์ด m[K] = V ๋ฐฉ์์ผ๋ก๋ ๊ฐ๋ฅํ๋ฉฐ, ๋ ๋ง์ด ์ฐ์ด๋ ๋ฐฉ์์ ๋๋ค.
- m.erase(K)
ํ์ฌ hashmap์ ๋ค์ด์๋ ๋ฐ์ดํฐ ์ค key๊ฐ K์ธ ์์ ์ฐพ์ ์ ๊ฑฐํฉ๋๋ค.
- m.find(K) ํน์ m[K]
ํ์ฌ hashmap์ key๊ฐ K์ธ ์์ด ์๋์ง๋ฅผ ํ์ธํฉ๋๋ค. m.find(K) ์ด์ฉ์ ๋ง์ฝ ์๋ค๋ฉด ํด๋น iterator๋ฅผ ๋ฐํํ๋ฉฐ, ์๋ค๋ฉด m.end()๊ฐ์ ๋ฐํํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ด ์๋ค๋ฉด m.find(K) != m.end(), ์๋ค๋ฉด m.find(K) == m.end()๋ฅผ ๋ง์กฑํ ๊ฒ์ ๋๋ค. ์ด๋, ์์๋ pair ํ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ์ ๊ทผํ ์ ์์ต๋๋ค.
cout << (m.find(K))->first << endl; // key๊ฐ K์ธ ์์์ key ์กฐํ
cout << (m.find(K))->second << endl; // key๊ฐ K์ธ ์์์ value ์กฐํ
cout << (*m.find(K)).first << endl; // key๊ฐ K์ธ ์์์ key ์กฐํ
cout << (*m.find(K)).second << endl; // key๊ฐ K์ธ ์์์ value ์กฐํ
๋จ, ๊ฐ๋ง ์กฐํํ๊ณ ์ถ์ ๊ฒฝ์ฐ๋ผ๋ฉด ๋ฐฐ์ด์์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด ๊ฐ์ ์ ๊ทผํ๋ฏ์ด m[K] ํํ๋ก๋ ์ด์ฉ ๊ฐ๋ฅํฉ๋๋ค.
cout << m[K] << endl; // key๊ฐ K์ธ ์์์ value ์กฐํ
Side Note
๋ง์ฝ key๊ฐ ๋ฌธ์์ด์ด๋ผ๋ฉด, ๋ง์น ๋ฐฐ์ด index๊ฐ ๋ฌธ์์ด์ด ๋ ๊ฒ ์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค!
unordered_map<string, int> ํ์ ์ผ๋ก ์ ์ธํ๋ฉด ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_map<string, int> m;
m["banana"] = 6;
m["helloworld"] = 2;
m["apple"] = 5;
cout << m["banana"] << endl; // key๊ฐ banana์ธ ์์ value ์ถ๋ ฅ (6)
}
์ถ์ฒ ์ฝ๋ํธ๋ฆฌ
'๐ ์๊ณ ๋ฆฌ์ฆ > Code Tree' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฝ๋ํธ๋ฆฌ] Tree Map (0) | 2023.02.09 |
---|---|
[์ฝ๋ํธ๋ฆฌ] HashMap ์ฐ์ต๋ฌธ์ (0) | 2023.02.09 |
[์ฝ๋ํธ๋ฆฌ] ๊ณต๊ฐ๋ณต์ก๋ (0) | 2023.02.06 |
[์ฝ๋ํธ๋ฆฌ] ๋ฐ๋ณต๋ฌธ์ ์๊ฐ๋ณต์ก๋(2) (0) | 2023.02.06 |
[์ฝ๋ํธ๋ฆฌ] ๋ฐ๋ณต๋ฌธ์ ์๊ฐ๋ณต์ก๋(1) (0) | 2023.02.06 |