HYOJIN LIM
by HYOJIN LIM
1 min read

Categories

[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(): ์ตœ๋Œ€ํฌ๊ธฐ(๋‚จ์€ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ)๋ฅผ ๋ฐ˜ํ™˜