개발/C++

[C++] list 컨테이너

hojak99 2016. 12. 22. 23:18

list 컨테이너

list는 헤더파일 <list>에 정의된 순차 컨테이너의 한 종류로 원소들을 메모리 상에 선형으로 배열된다.


list 컨테이너는 이중 연결 리스트로 구현되는데 이중 연결 리스트를 이용하면 메모리 상의 임의의 위치에 원소를 저장하더라도 참조를 할 수 있게 된다. 왜냐하면 어떤 원소의 위치는 이전 원소와 다음 원소의 링크를 통해 따라서 추적해 나갈 수 있기 때문이다.


vector, deque와 비교했을 때, list는 원소의 삽입, 삭제, 그리고 컨테이너 내부에서의 원소들 간의 이동이 매우 효율적이다. 따라서 정렬 알고리즘처럼 원소의 이동이 빈번하게 일어나는 곳에 적용하면 효율적이다. 



생성자

1. list()

 - 빈 컨테이너를 생성한다. 


2. explicit list (size_type n, const allocator_type& alloc = allocator_type());

 - n을 요소로 갖는 컨테이너를 생성한다. 


3. template <class InputIterator> list (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type());

 - [첫번째, 마지막]까지의 요소를 갖는 컨테이너를 생성한다. 


4. list (const list& x);

 - 각각 x의 요소와 함께 복사한다. 


5. list (list&& x);

 - x개의 요소를 가져오는 컨테이너를 생서성한다. 


6. list (initializer_list<value_type> il, const allocator_type& alloc = allocator_type());

 - 각각의 요소를 순서대로 복사해 컨테이너를 생성한다.



멤버 함수

1. lt.assign(n,x)

 - lt에 x 값으로 n개의 원소를 할당한다 


2. lt.assign(b,e)

 - lt를 반복자 구간 [b,e)로 할당한다. 


3. lt.back()

 - lt의 마지막 원소를 참조한다. 


4. p=lt.begin() p는

 - lt의 첫 원소를 가리키는 반복자다 


5. lt.clear()

 - lt의 모든 원소를 제거한다. 


6. lt.empty()

 - lt가 비었는지 조사한다 


7. p=lt.end()

 - p는 lt의 끝을 표식하는 반복자다 


8. q=lt.erase(p)

 - p가 가리키는 원소를 제거한다. q는 다음 원소를 가리킨다 


9. q= lt.erase(b,e)

 - 반복자 구간 [b,e)의 모든 원소를 제거한다. q는 다음 원소다 


10. lt.front()

 - lt의 첫 번째 원소를 참조한다

int main()

{

           std::list<int> list;

 

           list.push_back(1);

           list.push_back(2);

           list.push_back(3);

 

           list.clear();

        std::cout<<list.empty()<<std::endl;

}


/*

   출력값:

   1

*/


int main()

{

           std:: list <int> list;

 

           list.push_back(1);

           list.push_back(2);

 

           int a = list.back();

 

           std::cout << a;

 

           return 0;

}


/*

   출력값:

   2

*/

int main()

{

           std:: list <int> list;

 

           list.push_back(1);

           list.push_back(2);;

 

           std::cout << list.size();

 

           return 0;

}


/*

   출력값:

   2

*/


반응형