ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.