1. ์์(์ํ์ค) ์ปจํ ์ด๋
๋ฐ์ดํฐ๋ฅผ ์ ํ์ผ๋ก ์ ์ฅํ๋ ์ปจํ ์ด๋๋ก ์ฐ๊ด ์ปจํ ์ด๋์ ๋นํด ๊ฒ์ ์ฑ๋ฅ์ด ์ข์ง ์๋ค.
1) Vector
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ปจํ ์ด๋์ด๋ค.
- ์ผ๋ฐ ๋ฐฐ์ด์ฒ๋ผ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ ํ์ฅ/์ถ์๊ฐ ๊ฐ๋ฅํ ๋์ ๋ฐฐ์ด๋ก ๊ตฌํ๋์ด ์๋ค.
- iterator ๋ฟ๋ง ์๋๋ผ index๋ก๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ์ฌ ๊ฐ๋ณ ์์์ ๋ํ ์ ๊ทผ ์๋๊ฐ ๋น ๋ฅด๋ค.
2) Deque
- vector์ ๋น์ทํ ์ปจํ ์ด๋์ด์ง๋ง, ํ๋์ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ด ์๋ ์ฌ๋ฌ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ๋๋์ด ์ ์ฅ๋๋ค.
- Random access iterator๋ฅผ ํตํ index๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
3) List
- ๋น์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค.
- index๋ก ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค. ์ ๊ทผ์ ํ๊ธฐ ์ํด์๋ ์ ํ ํ์์ด ํ์ํ๋ค.
- ๋ณดํต ์ฝ์ , ์ญ์ ํ๋ ์ฐ์ฐ์ด ๋ง์ ๋ ์ฌ์ฉํ๋ค.
4) Array
- vector์ ๋น์ทํ ์ปจํ ์ด๋์ด์ง๋ง, ์ ์ ๋ฐฐ์ด์ด๋ค.
2. ์ฐ๊ด ์ปจํ ์ด๋
์์์ ์์น๊ฐ ์์ ์ ๊ฐ๊ณผ ํน์ ์ ๋ ฌ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ํด์ง๋ ์ปจํ ์ด๋๋ก ๋น ๋ฅธ ๊ฒ์์ ์ฉ์ดํ๋ค.
1) Set
set<key, (orderclass)>์ ํํ๋ก key ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ ์ํ ์ ์งํ๋ค.
- key ๊ฐ์ ์ค๋ณต๋ ๊ฐ์ ํ์ฉํ์ง ์๋๋ค.
- orderclass๋ก ์ ๋ ฌ ๊ธฐ์ค์ ์ ํ ์ ์๋ค. ๋ํดํธ๋ ์ค๋ฆ์ฐจ์์ด๋ค.
class OrderClass {
public:
bool operator()(pair<int, int> a, pair<int, int> b) {
return a.second < b.second;
}
};
int main()
{
set<pair<int, int>, OrderClass> s;
}
2) Map
map<key, value>์ ํํ๋ก key ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค.
- key ๊ฐ์ ์ค๋ณต๋ ๊ฐ์ ํ์ฉํ์ง ์๋๋ค.
- m[key] = value;์ ํํ๋ก ์์๋ฅผ ์ถ๊ฐ ๋๋ ์์ ์ด ๊ฐ๋ฅํ๋ค.
3) Multiset/Multimap
์ค๋ณต๋ ์์(key)๋ฅผ ํ์ฉํ๋ค.
3. ๋น์ ๋ ฌ ์ปจํ ์ด๋
์์์ ์์น๊ฐ ์ค์ํ์ง ์๊ณ ํน์ ์์๊ฐ ์ด ์ปจํ ์ด๋ ์์ ์๋์ง๊ฐ ์ค์ํ๋ค.
1) unordered_set
2) unordered_map
4. ์ปจํ ์ด๋ ์ด๋ํฐ
1) stack
2) queue
5. ๋ฐ๋ณต์ (Iterator)
์ปจํ ์ด๋ ํด๋์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ ์ฐ์ฐ์๋ก * ์ฐ์ฐ์๋ฅผ ํตํด ๋ฐ๋ณต์๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
// ๊ฐ ์ฐพ๊ธฐ
auto iter = find(v.begin(), v.end(), val);
if (iter == v.end())
cout << "๊ฐ์ด ์กด์ฌํ์ง ์์";
// ์ต์๊ฐ/์ต๋๊ฐ ์ฐพ๊ธฐ
auto iter = min_element(v.begin(), v.end());
auto iter = max_element(v.begin(), v.end());
// ์ง์ฐ๊ธฐ
auto iter = remove_if(v.begin(), v.end(), [](int a) {
return a % 3 == 0;
});
v.erase(iter, v.end());
6. ๊ตฌํ
https://baactree.tistory.com/29
7. ๊ธฐํ
1) Vector, List, Map ์ฐจ์ด์
- Vector: ์ธ๋ฑ์ค๋ก ๋๋ค ์ ๊ทผ ๊ฐ๋ฅํ์ง๋ง ๊ฒ์ ์๋๊ฐ ๋๋ฆฌ๊ณ ์ค๊ฐ์ ๋ฐ์ดํฐ ์ฝ์ ์ด๋ ์ญ์ ๊ฐ ์ด๋ ต๋ค.
- List: ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์ฝ์ง๋ง ๋ฐ๋์ ์ํํด์ผ ์ํ๋ ์๋ฃ๋ฅผ ์ฐพ์ ์ ์๋ค.
- Map: ๋ง์ ์๋ฃ๋ฅผ ์ ๋ ฌํ ์ ์๊ณ ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํ์ง๋ง ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์ด๋ ต๋ค.
2) Map๊ณผ HashMap ์ฐจ์ด
- Map์ ํค๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ณ ๋ด๋ถ ์๋ฃ๋ค์ ์ ๋ ฌํ๋ค. ์ด๋ Map์ ๋ ๋ ๋ธ๋ ํธ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ logN์ ์๋๋ฅผ ๊ฐ์ง์ง๋ง HaspMap์ ์์ ์๊ฐ ๋ด์ ์ํํ ์ ์๋ค. ๋ฐ์ดํฐ์์ด ๋ง์ ๊ฒฝ์ฐ HaspMap์ ์ฌ์ฉํ๋ ๊ฒ ์ข๋ค.
- Map์ ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅํ์ง๋ง HashMap์ ์ ๋ ฌํ์ง ์๋๋ค. ์๋ํ๋ฉด ์์์ ์์น๊ฐ ์ค์ํ์ง ์๊ณ ํน์ ์์๊ฐ ์ด ์๋ฃ๊ตฌ์กฐ ์์ ์๋์ง๊ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
- STL์ ๊ณต์ ์ปจํ ์ด๋์๋ HashMap์ ๋ฐ๋ก ์ ์ํ์ง ์์๋๋ฐ, ๋์ ๊ฑฐ์ ๋์ผํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ unordered_map์ ์ด์ฉํด ์ฌ์ฉํ ์ ์๋ค.