[C++] set container
set container
- ์ฐ๊ด ์ปจํ ์ด๋ (associative container) ์ค ํ๋
- ๋ ธ๋ ๊ธฐ๋ฐ ์ปจํ ์ด๋
- ๊ท ํ ์ด์งํธ๋ฆฌ๋ก ๊ตฌํ
- key๋ผ ๋ถ๋ฆฌ๋ ์์๋ค์ ์งํฉ์ผ๋ก ์ด๋ฃจ์ด์ง (์์๋ key๋ผ๊ณ ํ ์ ์์)
- key๊ฐ์ ์ค๋ณต์ด ํ์ฉ ๋์ง์๋๋ค
- insert ๋ฉค๋ฒ ํจ์์ ์ํด ์ฝ์ ์ด ๋๋ฉด ์์๋ ์๋ ์ ๋ ฌ ๋๋ค (์ ๋ ฌ๊ธฐ์ค: ์ค๋ฆ์ฐจ์)
- inorder traversal์ ํตํ์ฌ ์์๋๋ก ์ถ๋ ฅ์ด ๊ฐ๋ฅํ๋ค (iterator๋ฅผ ์ฌ์ฉํ๋ค)
set ์ฌ์ฉํ๊ธฐ
- set ํค๋ ์ ์ธํ๊ธฐ
- set < [Data Type] > [๋ณ์ ์ด๋ฆ] ์ผ๋ก ์ ์ธํ๊ธฐ
set์ ์์ฑ์์ ์ฐ์ฐ์
- set <[Data type]> set1 : ๊ธฐ๋ณธ ์ ์ธ
- set <[Data type]> set1 (pred) : pred๋ฅผ ํตํด ์ ๋ ฌ๊ธฐ์ค์ ์ธ์ด๋ค
- set <[Data type]> set2 (set1) : set1์ ๋ณต์ฌํ set2๋ฅผ ์ ์ธ
- โ==โ, โ!=โ, โ<โ, โ>โ, โ<=โ, โ>=โ ์ ์ฐ์ฐ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค
set์ ๋ฉค๋ฒ ํจ์
set1.begin()๊ณผ set1.end(): ์ฒซ๋ฒ์งธ ์์๋ถํฐ ๋ง์ง๋ง ์์๊น์ง interator๋ก ์ฌ์ฉ ๊ฐ๋ฅ
set1.rbegin()๊ณผ set1.rend(): ์ญ์ผ๋ก ์ถ๋ ฅํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ ์ ์๋ค.
for (auto i = st.rbegin(); i != st.rend(); i++) { cout << *i << "\n"; }
set1.clear(): set์ ๋ชจ๋ ์์ ์ ๊ฑฐ
set1.count(): set์ ๋ชจ๋ ์์ ๊ฐ์ ๋ฐํ
set1.empty(): set์ด ๋น์ด์๋์ง ํ์ธ
set1.insert(k): ์์ k๋ฅผ ์ฝ์
set1.insert(iter, k): iter๊ฐ ๊ฐ๋ฆฌํค๋ ์์น๋ถํฐ k๋ฅผ ์ฝ์ ํ ์์น๋ฅผ ํ์ํ ํ ์ฝ์
set1.erase(iter): iter๊ฐ ๊ฐ๋ฆฌํค๋ ์์๋ฅผ ์ ๊ฑฐํ๊ณ , ์ ๊ฑฐํ ์์์ ๋ค์ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐ๋ณต์๋ฅผ ๋ฐํ
set1.erase(start, end): [start, end)๋ฒ์์ ์์๋ฅผ ๋ชจ๋ ์ ๊ฑฐ
set1.find(k): ์์ k๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐ๋ณต์๋ฅผ ๋ฐํํ๊ณ , ์๋ค๋ฉด s.end()์ ๊ฐ์ ๋ฐ๋ณต์๋ฅผ ๋ฐํ
set1.swap(set2): set1๊ณผ set2๋ฅผ ๊ตํ
set1.upper_bound(k): ์์ k๊ฐ ๋๋๋ ๊ตฌ๊ฐ์ ๋ฐ๋ณต์
set1.lower_bound(k): ์์ k๊ฐ ์์ํ๋ ๊ตฌ๊ฐ์ ๋ฐ๋ณต์
set1.equal_range(k): ์์ k๊ฐ ์์ํ๋ ๊ตฌ๊ฐ๊ณผ ๋๋๋ ๊ตฌ๊ฐ์ ๋ฐ๋ณต์ pair ๊ฐ์ฒด๋ฅผ ๋ฐํ
set1.value_comp() / set1.key_comp(): ์ ๋ ฌ ๊ธฐ์ค ์กฐ๊ฑด์๋ฅผ ๋ฆฌํด
set1.size(): set์ ํฌ๊ธฐ๋ฅผ ๋ฐํ
set1.max_size(): ์ต๋ํฌ๊ธฐ(๋จ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ)๋ฅผ ๋ฐํ