YURI๐Ÿ•๐Ÿ“๐Ÿถ 2019. 8. 20. 20:20
๋ฐ˜์‘ํ˜•

๋Œ€ํ•™๊ต 2ํ•™๋…„ ๋•Œ๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ stl์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ๋ง‰์ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค ๋ณด๋‹ˆ stl์„ ์‚ฌ์šฉํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ์ ์–ด์ ธ์„œ ์ด๋ ‡๊ฒŒ๋‚˜๋งˆ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

List๋Š” sequence container๋กœ ์ƒ์ˆ˜์‹œ๊ฐ„ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ์ˆœํžˆ ๋งํ•ด์„œ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ stl ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. doubly-linked list๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

๋ฉค๋ฒ„ ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค(์ผ๋ถ€๋งŒ ์„œ์ˆ )

begin iterator์˜ ์‹œ์ž‘๋ถ€๋ถ„์„ returnํ•œ๋‹ค
end iterator์˜ ๋๋ถ€๋ถ„์„ returnํ•œ๋‹ค
empty list๊ฐ€ ๋น„์—ˆ๋Š”์ง€ ์•Œ๋ ค์คŒ
size list์˜ ์›์†Œ ๊ฐœ์ˆ˜
front ์ฒซ๋ฒˆ์งธ ์›์†Œ์— ์ ‘๊ทผํ•œ๋‹ค
back ๋งˆ์ง€๋ง‰ ์›์†Œ์— ์ ‘๊ทผํ•œ๋‹ค
assign ์ƒˆ๋กญ๊ฒŒ list๋ฅผ ํ• ๋‹นํ•œ๋‹ค(์ž„์˜์˜ ๊ฐ’)
push_front ๋งจ์•ž์— ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค
push_back ๋งจ๋’ค์— ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค
pop_back ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค
insert ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค(์ž„์˜ ์œ„์น˜)
erase ์›์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค(์ž„์˜ ์œ„์น˜)
clear list๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค
sort list๋ฅผ ์ •๋ ฌํ•œ๋‹ค(๊ธฐ๋ณธ๊ฐ’ ์˜ค๋ฆ„์ฐจ์ˆœ)
reverse list์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜๋Œ€๋กœํ•œ๋‹ค
merge ๋‘๊ฐœ์˜ list๋ฅผ ํ•ฉ๋ณ‘ํ•œ๋‹ค(์ •๋ ฌํ•˜๋ฉด์„œ)
remove_if ํ•ด๋‹น ์กฐ๊ฑด์— ๋งž๋Š” ์›์†Œ๋“ค์„ ์‚ญ์ œํ•œ๋‹ค
unique list์˜ ์›์†Œ์ค‘ ์ค‘๋ณต๋˜๋Š” ๊ฐ’์„ ์ œ๊ฑฐํ•œ๋‹ค

 

* ์ฃผ์˜ ํ•  ์ 

erase() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด list์˜ ์›์†Œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.

erase ํ•จ์ˆ˜์˜ return ๊ฐ’์€ ์‚ญ์ œ๋œ ์›์†Œ ๋‹ค์Œ์— ์žˆ๋Š” iterator๋ผ๊ณ  ํ•œ๋‹ค.

			// 16235 ๋ฐฑ์ค€ 
            list<int>::iterator iter;
			for (iter = trees.begin(); iter != trees.end();) {
				if ((*iter) <= current_nutrient) {
					//์–‘๋ถ„์ด ์ถฉ๋ถ„ํ•˜๋ฉด
					current_nutrient -= (*iter); // ์–‘๋ถ„ ๋จน๊ณ 
					(*iter)++; // ๋‚˜์ด ์ฆ๊ฐ€
					iter++;
				}
				else {
					int tmp = (*iter);
					trees.erase(iter++);
					deadtrees.push(tmp); // ํ์— ๋„ฃ๋Š”๋‹ค
					if (trees.empty()) break;
				}

์œ„์˜ ์˜ˆ์‹œ๋Š” 16235๋ฒˆ์„ ํ‘ผ ๋‚˜์˜ ์ฝ”๋“œ์˜ ์ผ๋ถ€์ด๋‹ค. ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ trees.erase(iter++)์ด๋‹ค.

์ฒ˜์Œ์—๋Š”

for(iter=list.begin();iter!=list.end();++iter){
	if(์กฐ๊ฑด) list.erase(iter);
}

์ด๋Ÿฐ ์‹์œผ๋กœ for๋ฌธ์—์„œ๋Š” iterator๊ฐ€ ๊ณ„์† ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€๋˜๊ณ  ์กฐ๊ฑด์ด true๋ผ๋ฉด iterator๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์‹์œผ๋กœ ํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์‚ญ์ œ๋  ์›์†Œ๊ฐ€ ๋งจ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ผ๋ฉด iterator๊ฐ€ end() ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•˜๊ณ , for๋ฌธ์—์„œ end()์ธ iterator๋ฅผ ์ด์šฉํ•ด ๋‹ค์‹œ ++ ์—ฐ์‚ฐ์„ ํ•˜๋ ค๊ณ  ํ•˜์—ฌ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

๊ทธ๋ž˜์„œ for๋ฌธ์—์„œ ์ฆ๊ฐ€ ์—ฐ์‚ฐ์„ ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋•Œ๋งˆ๋‹ค ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊พธ์—ˆ๋”๋‹ˆ ๋ฌธ์ œ ํ•ด๊ฒฐ์ด ๋˜์—ˆ๋‹ค.

for( Iterator = List.begin(); Iterator!= List.end(); )

{

Iterator = List.erase(Iterator);

}

๋ญ ๊ตณ์ด ++์„ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด...

for( Iterator = List.begin(); Iterator != List.end(); )

{

List.erase(Iterator++);

}



์ถœ์ฒ˜: https://gamepro.tistory.com/263 [๊ฒŒ์ž„ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž๋ฃŒ๋ชจ์Œ]

++๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์œ„์™€ ๊ฐ™๋‹ค.

์ถœ์ฒ˜์— ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด ๋” ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ์œผ๋‹ˆ ๋“ค์–ด๊ฐ€ ๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

๋ฐ˜์‘ํ˜•