hugDog
Android DevLog
hugDog
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ™Œ Hello? (162)
    • ๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ (12)
      • ๊ฐœ๋… ์ •๋ฆฌ (5)
      • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (4)
      • ๊ธฐํƒ€ (3)
    • ๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜ (54)
      • ๊ฐœ๋… (0)
      • ๋ฐฑ์ค€ (48)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
    • ๐Ÿ“„๊ฐœ๋ฐœ ์ผ์ง€ (0)
      • FINPO (0)
    • ๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (71)
      • C++ ์ •๋ฆฌ (49)
      • C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ (20)
      • Kotlin (2)
    • โญProject (1)
    • ๐ŸšดTIL (13)
      • Clean Code (13)
    • ๐Ÿšฉ๊ธฐํƒ€ (9)
      • ๋ชฉํ‘œ (6)
      • ์ผ์ƒ (3)
      • ๋ฌธ์„œ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
hugDog

Android DevLog

๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ์ •๋ฆฌ

C++ ์ •๋ฆฌ - 48 (ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ปจํ…Œ์ด๋„ˆ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ดํ„ฐ๋ ˆ์ดํ„ฐ, ํ•จ์ˆ˜ ๊ฐ์ฒด, vector ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค, Range์— ๊ธฐ์ดˆํ•œ ๋ฃจํ”„(c++11))

2020. 12. 15. 17:55
728x90

ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(STL; Standard Template Library)๋Š” ์ปจํ…Œ์ด๋„ˆ, ์ดํ„ฐ๋ ˆ์ดํ„ฐ, ํ•จ์ˆ˜ ๊ฐ์ฒด, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ…œํ”Œ๋ฆฟ๋“ค์˜ ์ง‘ํ•ฉ์„ ์ œ๊ณตํ•œ๋‹ค.

 

์ปจํ…Œ์ด๋„ˆ๋Š”, ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ๋‹จ์œ„์ด๋‹ค. STL ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๊ฐ’๋“ค์„ ์ €์žฅํ•œ๋‹ค.

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์€, ๋ฐฐ์—ด์„ ์ •๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋ฆฌ์ŠคํŠธ์—์„œ ํŠน์ • ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€, ํŠน๋ณ„ํ•œ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

 

์ดํ„ฐ๋ ˆ์ดํ„ฐ๋Š”, ๋ฐฐ์—ด ์•ˆ์—์„œ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์น˜๋ฅผ ์˜ฎ๊ธฐ๋“ฏ์ด, ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ์œ„์น˜๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฐ์ฒด๋“ค์ด๋‹ค.

 

ํ•จ์ˆ˜ ๊ฐ์ฒด๋Š” ํ•จ์ˆ˜์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. ํ•จ์ˆ˜ ๊ฐ์ฒด๋Š” ํด๋ž˜์Šค ๊ฐ์ฒด์ผ ์ˆ˜๋„ ์žˆ๊ณ , ํ•จ์ˆ˜ ํฌ์ธํ„ฐ์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

 

STL์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด, ํ, ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ STL์€ ๊ฒ€์ƒ‰, ์ •๋ ฌ, ๋ฌด์ž‘์œ„ํ™” ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด ์ค€๋‹ค.

 

vector ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค

์ „์‚ฐ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฒกํ„ฐ๋ผ๋Š” ์šฉ์–ด๋Š” ์ˆ˜ํ•™์ ์ธ ๋ฒกํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐฐ์—ด์— ์ƒ๋‹นํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

vector ํ…œํ”Œ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด, ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐํ˜•์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ํ†ต์ƒ์ ์ธ <type> ํ‘œ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋˜ํ•œ vector ํ…œํ”Œ๋ฆฟ์„ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์ž…์„ ์‚ฌ์šฉํ•œ๋‹ค. 

vector<int> ratings(5); //5๊ฐœ์˜ intํ˜• ๊ฐ’์„ ๊ฐ€์ง„ ๋ฒกํ„ฐ

 

vector ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„์—๋Š”, []์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„ ๋กœ๋”ฉ์œผ๋กœ ๊ฐœ๋ณ„์ ์ธ ์›์†Œ๋“ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด ํ‘œ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

vector์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

๋ชจ๋“  STL ์ปจํ…Œ์ด๋„ˆ๋“ค์€ ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” ์›์†Œ๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” size(), ๋‘ ์ปจํ…Œ์ด๋„ˆ์˜ ๋‚ด์šฉ์„ ๊ตํ™˜ํ•˜๋Š” swap(), ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” begin(), ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” ๋งˆ์ง€๋ง‰ ์›์†Œ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜๋Š” ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” end()๋“ฑ์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์„œ๋“œ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

 

์ดํ„ฐ๋ ˆ์ดํ„ฐ(iterator)๋Š” ํฌ์ธํ„ฐ์˜ ์ผ๋ฐ˜ํ™”์ด๋‹ค.

์ดํ„ฐ๋ ˆ์ดํ„ฐ๋Š” ํฌ์ธํ„ฐ ๋˜๋Š” ๋‚ด์šฉ ์ฐธ์กฐ(operator *())์™€ ์ฆ๊ฐ€(operator++())์™€ ๊ฐ™์€, ํฌ์ธํ„ฐ๋ฅผ ๋‹ฎ์€ ์—ฐ์‚ฐ๋“ค์ด ์ •์˜๋˜์–ด์žˆ๋Š” ๊ฐ์ฒด์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ฐ ์ปจํ…Œ์ด๋„Œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ ์ ˆํ•œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์ •์˜ํ•œ๋‹ค. ๊ทธ ์ดํ„ฐ๋ ˆ์ดํ„ฐ์˜ ๋ฐ์ดํ„ฐํ˜• ์ด๋ฆ„์€ iterator์ธ๋ฐ, ํด๋ž˜์Šค ์‚ฌ์šฉ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๋Š” typedef์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, vector์˜ doubleํ˜• ํŠน์ˆ˜ํ™”๋ฅผ ์œ„ํ•œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์„ ์–ธํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

vector<double>::iterator pd; //pd๋Š” ์ดํ„ฐ๋ ˆ์ดํ„ฐ

 

scores๊ฐ€ vector<double> ๊ฐ์ฒด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž.

vector<double> scores;

 

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ดํ„ฐ๋ ˆ์ดํ„ฐ pd๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

pd = scores.begin(); //pd๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ง€์‹œํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.

*pd=22.3; //pd๋ฅผ ๋‚ด์šฉ ์ฐธ์กฐํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์— ๊ฐ’์„ ๋Œ€์ž…ํ•œ๋‹ค.

++pd; //pd๊ฐ€ ๊ทธ๋‹ค์Œ ์›์†Œ๋ฅผ ์ง€์‹œํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.

 

๊ทธ ๋ฐ–์—๋„ c++11์˜ ์ž๋™ ํƒ€์ž… ์ถ”๋ก ์„ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

vector<double>::iterator pd=scores.begin();

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

auto pd = scores.begin();

 

๋˜ํ•œ vector ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค๋Š” ์ผ๋ถ€ STL ์ปจํ…Œ์ด๋„ˆ๋“ค๋งŒ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. push_back()์ด๋ผ๋Š” ๊ฐ„๋‹จํ•œ ๋ฉ”์„œ๋“œ๋Š”, ๋ฒกํ„ฐ์˜ ๋์— ํ•˜๋‚˜์˜ ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

์ง€์ •๋œ ๋ฒ”์œ„๋ฅผ ๋ฒกํ„ฐ์—์„œ ์‚ญ์ œํ•˜๋Š” erase()๋ผ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค.

์ด ๋ฉ”์„œ๋“œ๋Š” ์‚ญ์ œํ•  ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๋Š” 2๊ฐœ์˜ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋Š” ๋ฒ”์œ„์˜ ์‹œ์ž‘์„ ์ฐธ์กฐํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋Š” ๋ฒ”์œ„์˜ ๋ ๋ฐ”๋กœ ๋‹ค์Œ์„ ์ฐธ์กฐํ•œ๋‹ค.

 

scores.erase(scores.begin(),scores.begin()+2);

begin()๊ณผ begin()+1์— ์˜ํ•ด ์ฐธ์กฐ๋˜๋Š”, ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ๋‘ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

 

insert() ๋ฉ”์„œ๋“œ๋Š” erase() ๋ฉ”์„œ๋“œ์™€ ๋ฐ˜๋Œ€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

์ด ๋ฉ”์„œ๋“œ๋Š” 3๊ฐœ์˜ ์ดํ„ฐ๋ ˆ์ดํ„ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

์ฒซ ๋ฒˆ์งธ ์ดํ„ฐ๋ ˆ์ดํ„ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ƒˆ๋กœ์šด ์›์†Œ๋“ค์ด ์‚ฝ์ž…๋  ์œ„์น˜ ๋ฐ”๋กœ ์•ž์˜ ์œ„์น˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋‘ ๋ฒˆ์งธ์™€ ์„ธ ๋ฒˆ์งธ ์ดํ„ฐ๋ ˆ์ดํ„ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์‚ฝ์ž…์— ์‚ฌ์šฉ๋  ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ๋ฒ”์œ„๋Š” ๋˜ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ๊ฐ์ฒด์˜ ์ผ๋ถ€์ด๋‹ค.

vector<int> old;

vector<int> new;

...

old.insert(old.begin(),new.begin()+1,new.end());

new๋ฒกํ„ฐ์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์›์†Œ๋ฅผ old ๋ฒกํ„ฐ์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ ์•ž์— ์‚ฝ์ž…ํ•œ๋‹ค.

 

vector์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทธ ๋ฐ–์˜ ๊ฒƒ

๋Œ€ํ‘œ์ ์ธ STL ํ•จ์ˆ˜์ธ for_each(), random_shuffle(), sort() ์„ธ ๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ณด์ž.

for_each() ํ•จ์ˆ˜๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ํด๋ž˜์Šค์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

3๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๋Š” ์ดํ„ฐ๋ ˆ์ดํ„ฐ์ด๋‹ค. ์„ธ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ง€์‹œํ•˜๋Š” ํฌ์ธํ„ฐ์ด๋‹ค. for_each() ํ•จ์ˆ˜๋Š” ์ง€์‹œ๋œ ํ•จ์ˆ˜๋ฅผ ๊ทธ ๋ฒ”์œ„ ์•ˆ์— ์žˆ๋Š” ๊ฐ ์ปจํ…Œ์ด๋„ˆ ์›์†Œ์— ์ ์šฉํ•œ๋‹ค. ์ง€์‹œ๋œ ํ•จ์ˆ˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์›์†Œ๋“ค์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

vector<Review>::iterator pr;

for(pr=books.begin();pr!=books.end();pr++)

ShowReview(*pr);

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

for_each(books.begin(),books.end(),ShowReview);

 

random_shuffle() ํ•จ์ˆ˜๋Š” ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ๊ทธ ๋ฒ”์œ„ ์•ˆ์— ์žˆ๋Š” ์›์†Œ๋“ค์„ ๋ฌด์ž‘์œ„ ์ˆœ์„œ๋กœ ์žฌ๋ฐฐ์น˜ํ•œ๋‹ค. 

random_shuffle(books.begin(),books.end());

์ด ๊ตฌ๋ฌธ์€, books ๋ฒกํ„ฐ์— ์žˆ๋Š” ๋ชจ๋“  ์›์†Œ๋“ค์˜ ์ˆœ์„œ๋ฅผ ๋ฌด์ž‘์œ„ ์ˆœ์„œ๋กœ ์žฌ๋ฐฐ์น˜ํ•œ๋‹ค.

 

sort() ํ•จ์ˆ˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์ด ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์€ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐํ˜•์˜ ์›์†Œ์— ๋งž๊ฒŒ ์ •์˜๋œ < ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ ๋ฒ”์œ„๋ฅผ ์ •๋ ฌํ•œ๋‹ค.

 

vector<int> coolstuff;

...

sort(coolstuff.begin(),coolstuff.end());

๋‚ด์žฅ๋œ < ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’๋“ค์„ ๋น„๊ตํ•จ์œผ๋กœ์จ, coolstuff์˜ ๋‚ด์šฉ์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

 

์ปจํ…Œ์ด๋„ˆ ์›์†Œ๋“ค์ด ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด์ผ ๋•Œ, sort() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ทธ ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐํ˜•์— ๋งž๊ฒŒ ์ •์˜๋œ operator<() ํ•จ์ˆ˜๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋˜๋Š” ์ฑ… ์ œ๋ชฉ ๋Œ€์‹  ์ฑ… ๋“ฑ๊ธ‰์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋ ค ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ, ๋‘ ๋ฒˆ์งธ ๋ฒ„์ „์˜ sort()๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ฒ„์ „์€ 3๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ์ดํ„ฐ๋ ˆ์ดํ„ฐ์ด๋‹ค. ์„ธ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ฐ’์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด operator<() ๋Œ€์‹ ์— ์‚ฌ์šฉํ•  ํ•จ์ˆ˜๋ฅผ ์ง€์‹œํ•˜๋Š” ํฌ์ธํ„ฐ์ด๋‹ค. ๋ฆฌํ„ดํ˜•์€ boolํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

Range์— ๊ธฐ์ดˆํ•œ ๋ฃจํ”„(c++11)

for_each(books.begin(),books.end(),ShowReview);

์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด range์— ๊ธฐ์ดˆํ•œ ๋ฃจํ”„๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅ

for(auto x:books) ShowReview(x);

 

for_each()์™€๋Š” ๋‹ฌ๋ฆฌ range์— ๊ธฐ์ดˆํ•œ for๋Š” ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ฐธ์กฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    '๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ์ •๋ฆฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • C++ ์ •๋ฆฌ - 49 (copy(), ostream_iterator, istream_iterator, ๊ธฐํƒ€ ์œ ์šฉํ•œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋“ค)
    • C++ ์ •๋ฆฌ - 47 (์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค, auto_ptr ํ…œํ”Œ๋ฆฟ, ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ณ ๋ ค์‚ฌํ•ญ, auto_ptr ๋ณด๋‹ค unique_ptr์ด ๋” ์ข‹์€ ์ด์œ , unique_ptr์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์„ ํƒ)
    • C++ ์ •๋ฆฌ - 46 (string : c++11 ์ƒ์„ฑ์ž๋“ค, string ํด๋ž˜์Šค ์ž…๋ ฅ, ๋ฌธ์ž์—ด ์ž‘์—…, ์˜ค๋ฒ„ ๋กœ๋”ฉ๋œ find() ๋ฉ”์„œ๋“œ)
    • C++ ์ •๋ฆฌ - 45 (RTTI, dynamic_cast ์—ฐ์‚ฐ์ž, typeid ์—ฐ์‚ฐ์ž์™€ type_info ํด๋ž˜์Šค, ๋ฐ์ดํ„ฐํ˜• ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž, string ํด๋ž˜์Šค)
    hugDog
    hugDog
    ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”