๋ํ๊ต 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 [๊ฒ์ํ๋ก๊ทธ๋๋ฐ ์๋ฃ๋ชจ์] |
++๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ๋ ๋ฐฉ๋ฒ์ ์์ ๊ฐ๋ค.
์ถ์ฒ์ ๋ค์ด๊ฐ ๋ณด๋ฉด ๋ ์์ธํ ์ค๋ช ๋์ด ์์ผ๋ ๋ค์ด๊ฐ ๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ๋ค.