-
STL list 주요 특징 정리@ 16. 1 ~ 17. 1/STL 2013. 5. 27. 21:08
list의 가장 큰 특징 중 하나는 vector나 deque처럼 원소를 밀어내지않고 노드를 서로 연결하기만 하면 됨.
또한, 노드 기반 컨테이너의 삽입과 제거 동작은 반복자를 무효화시키지 않음.
아래는 예를 든 소스..
deque<int> dq; dq.push_back(10); dq.push_back(20); dq.push_back(30); deque<int>::iterator iter=dq.begin(); deque<int>::iterator iter2; cout << *iter << endl; //삭제전 10출력 iter2=dq.erase(iter); //iter의 위치 을 삭제하고 iter2는 20을 가르킨다.. cout << *iter2 << endl; //20이 출력되고 iter=iter2; //iter에 iter2의 위치 즉 20위치를 복사 cout << *iter << endl; //20이 출력되고 cout << endl; iter2=dq.insert(iter,100); //iter위치 즉 20위치에 100을 넣고 iter2는 100을 가르킨다. cout << *iter2 << endl; //100출력 cout << *iter << endl; //출력이 안됨 메모리 재할당또는 원소가 이동하여..안됨.. list<int> lt; lt.push_back(10); lt.push_back(20); lt.push_back(30); list<int>::iterator iter=lt.begin(); list<int>::iterator iter2; cout << *iter << endl; //삭제전 10출력 iter2=lt.erase(iter); //iter의 위치 10을 삭제하며 iter2는 20을 가르킨다. cout << *iter2 << endl; /20이 출력되고 iter=iter2;//iter에 iter2의 위치 즉 20위치를 복사 cout << *iter << endl; //20이 출력되고 cout << endl; iter2=lt.insert(iter,100); //iter위치 즉 20위치에 100을 넣고 iter2는 100을 가르킨다. cout << *iter2 << endl; //100 출력 cout << *iter << endl; //20출력 원소자체는 그대로 있으므로 반복자는 유효함
오늘은 잠깐 여기까지..
'@ 16. 1 ~ 17. 1 > STL' 카테고리의 다른 글
deque & list 컨테이너 (0) 2014.04.16 컨테이너 & 반복자 & 알고리즘 & 함수객체 (0) 2014.04.10 STL vector / deque 주요 특징 정리 (0) 2013.05.27 vector<STL> 사용하기(2) (0) 2013.03.18 vector<STL> 사용하기 (0) 2013.03.10