C++/c++

    [STL] ์šฐ์„ ์ˆœ์œ„ ํ priority_queue

    ์šฐ์„ ์ˆœ์œ„ ํ priority_queue๋Š” ํ์— ์žˆ๋Š” ๋ชจ๋“  ์›์†Œ ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด Top์„ ์œ ์ง€ํ•˜๋„๋ก, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ Heap์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด pop๊ณผ push๋ฅผ ํ•  ๋•Œ ๋งˆ๋‹ค ์ •๋ ฌ๋œ๋‹ค. priority_queue pq; ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ queue์— push๋˜๊ณ  priority_queue pq; ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ queue์— push๋œ๋‹ค. push() pop() top์˜ ์›์†Œ ์ œ๊ฑฐ top() ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ top์— ์žˆ๋Š” ์›์†Œ ์ฆ‰ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜ empty() ๋น„์–ด์žˆ์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ size() ์›์†Œ์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ queue์— push #include #include using namesp..

    [STL] set

    Set์˜ ํŠน์ง• - ์›์†Œ๊ฐ€ ์‚ฝ์ž…๋˜๋ฉด ์ž๋™์œผ๋กœ ์ •๋ ฌ sets; // ์˜ค๋ฆ„์ฐจ์ˆœ sets; // ๋‚ด๋ฆผ์ฐจ์ˆœ - ์ค‘๋ณต๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. set์— ์›์†Œ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ๊ทธ ์›์†Œ์˜ ๊ฐ’์„ ํ‚ค(key)๋ผ๊ณ  ํ•˜๋ฉฐ ์ค‘๋ณต์›์†Œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ํ‚ค๋Š” ์ „๋ถ€ ๊ณ ์œ ํ•˜๋‹ค. Set์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€ ๊ฒฝ์šฐ 1. ์‚ฝ์ž…๊ณผ ๋™์‹œ์— ์ •๋ ฌ์ด ํ•„์š”ํ•  ๋•Œ 2. ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ์›์†Œ์˜ ์ง‘ํ•ฉ์ด ํ•„์š”ํ•  ๋•Œ 3. ์ƒˆ๋กœ ์‚ฝ์ž…ํ•˜๋ ค๋Š” ์›์†Œ๊ฐ€ ์ค‘๋ณต์ธ์ง€ ํ™•์ธํ•  ๋•Œ sets; std::pair ret; ret = s.insert("a"); // s={a} cout

    [STL] unique๋กœ vector์—์„œ ์ค‘๋ณต ์›์†Œ ์ œ๊ฑฐํ•˜๊ธฐ : ์„  sort ํ›„ unique!

    ์šฐ์„  ํ—ค๋”๊ฐ€ ํ•„์š”ํ•˜๋‹ค. sort์™€ unique๋ฅผ ํ•จ๊ป˜ ์จ์ฃผ์–ด์•ผ ์˜๋„ ํ•œ ๋ฐ”๋Œ€๋กœ unique๋กœ vector์—์„œ ์ค‘๋ณต๋˜๋Š” ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋กœ์ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฒซ๋ฒˆ์งธ sort(result.begin(),result.end()); result.resize(unique(result.begin(),result.end())-result.begin()); ๋‘๋ฒˆ์งธ sort(result.begin(),result.end()); result.erase(unique(result.begin(), result.end()),result.end()); ๋‘ ๊ตฌ๋ฌธ์„ ๋ณด๋ฉด unique๋Š” ์ค‘๋ณต๋˜๋Š” ์›์†Œ๋“ค์ด ์ œ์™ธ๋œ ์ƒํƒœ์˜ vector์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ ๋‹ค์Œ iterator๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ˆˆ์น˜์ฑŒ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, unique๋Š”..

    [STL] map์—์„œ Value๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ

    [STL] map์—์„œ Value๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ

    ์ฐธ๊ณ ๋งํฌ: C++ STL์˜ ๊ฐ’๋ณ„๋กœ ๋งต ์ •๋ ฌ - GeeksforGeeks ํ•ด๋‹น ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค. ๊ฒฐ๋ก ์€ map STL ๋‹จ๋…์œผ๋กœ๋Š” Value ๊ธฐ์ค€์œผ๋กœ sortํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ, Pair ๋ฅผ ๋‹ด๋Š” vector์„ ์„ ์–ธํ•˜์—ฌ map iteratior์— ๋”ฐ๋ผ ์‚ฝ์ž…ํ•ด์ฃผ๊ณ  vector์˜ Pair second๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์‹œ sortํ•ด์•ผํ•œ๋‹ค. Sorting a Map by value in C++ STL - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/c..

    [STL] map

    ๋ฐ˜๋ณต๋ฌธ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ (first, second) ์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜ ๋ฐ˜๋ณต๋ฌธ ํ™œ์šฉํ•œ ์˜ˆ์ œ : ์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜์€ iterator์„ ํ™œ์šฉํ•˜์—ฌ begin()๋ถ€ํ„ฐ end()๊นŒ์ง€ ์ฐพ๋Š”๋‹ค. //์ธ๋ฑ์Šค๊ธฐ๋ฐ˜ for (auto iter = m.begin() ; iter ! = m.end(); iter++) { cout first

    [STL] Vector๋‚ด ์ตœ๋Œ€๊ฐ’, ์ตœ์†Œ๊ฐ’๊ณผ ๊ทธ ์ธ๋ฑ์Šค ์•Œ์•„๋‚ด๊ธฐ

    vector ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ตœ๋Œ€๊ฐ’, ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด #include ๋ฅผ ์จ์ฃผ๊ณ  max_element(๋ฒกํ„ฐ.begin(), ๋ฒกํ„ฐ.end())-๋ฒกํ„ฐ.begin() ๊ตฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๋ฉด ์ตœ๋Œ€๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. max_element์˜ ๊ฒฐ๊ณผ๋กœ ์ตœ๋Œ€๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์›๋ฆฌ : (์ตœ๋Œ€๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž - ๋งจ ์ฒ˜์Œ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” v.begin()) ๋”๋ถˆ์–ด * ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, max_element๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ๋Œ€๊ฐ’์˜ ์ธ๋ฑ์Šค ๊ฐ’๋„ ๊ตฌํ•ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ตœ์†Œ๊ฐ’๊ณผ ๊ทธ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” min_element๋กœ ๋ฐ”๊ฟ”์„œ ์‚ฌ์šฉํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. #include #include #include using namespace std; int main() { vecto..

    [STL] key ์ค‘๋ณต๊ฐ€๋Šฅํ•œ multimap๊ณผ make_pair ์กฐํ•ฉ

    #include #include #include #include #include using namespace std; int main(void) { multimap mm; multimap ::iterator mmiter; vectorkind_name1; vectorkind_name2; vectorkind_name3; vector clothes; kind_name1.push_back("yellowhat"); kind_name1.push_back("headgear"); kind_name2.push_back("bluesunglasses"); kind_name2.push_back("eyewear"); kind_name3.push_back("green_turban"); kind_name3.push_back("he..

    [STL] unordered_map๊ณผ make_pair ๊ฐ™์ด ์“ฐ๊ธฐ

    unordered_map์€ hash ๊ธฐ๋ฐ˜์œผ๋กœ map์€ tree ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์— unordered_map์˜ key๋“ค์€ ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , map์˜ key๋“ค์€ ์ •๋ ฌ๋˜์–ด์žˆ๋‹ค. ํƒ์ƒ‰๋ฐฉ๋ฒ• index๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ณ  iterator๋กœ ์ ‘๊ทผ ์‹œ์ž‘ : begin( ), ๋ : end( ) key : iter->first, value : iter->second ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ ์‹œ auto ํ™œ์šฉ or pair ์‚ฌ์šฉ #include #include #include #include #include using namespace std; int main(void) { unordered_map hs; vectorkind_name1; vectorkind_name2; vectorki..

    [STL] ์ด์ค‘ Vector : ์˜ˆ์‹œ vector<vector<string>>, ์ฝ”๋“œ์ฒจ๋ถ€

    vector clothes; ์— push_back() ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€, vector kind_name1; vector kind_name2; vector kind_name3; ๋“ฑ์˜ vectorํ˜• ๋ฟ์ด๋‹ค. ๊ฐ€๋ น, kind_name1,kind_name2,kind_name3์— ๊ฐ๊ฐ ์ ๋‹นํžˆ string์„ push_back()ํ•ด์ฃผ๊ณ  ์ด๊ฒƒ๋“ค์„ ๋˜ vector clothes; ์— push_back() ํ•œ๋‹ค๋ฉด... kind_name1.push_back("yellowhat"); kind_name1.push_back("headgear"); kind_name2.push_back("bluesunglasses"); kind_name2.push_back("eyewear"); kind_name3.push_back("green_turba..

    [STL] multimap์˜ ํƒ์ƒ‰ ๋ฐฉ๋ฒ•

    ํƒ์ƒ‰๋ฐฉ๋ฒ• index๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ณ  iterator๋กœ ์ ‘๊ทผ ์‹œ์ž‘ : begin( ), ๋ : end( ) key : iter->first, value : iter->second ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ ์‹œ auto ํ™œ์šฉ or pair ์‚ฌ์šฉ #include #include #include #include #include //multimap์€ ์ค‘๋ณต key๋ฅผ ํ—ˆ์šฉ using namespace std; int main(void) { multimap mm; multimapmultimapstr; multimapstr.insert(make_pair("0","cry")); multimapstr.insert(make_pair("0", "343")); for (pair tempmap : m..