(C++) STL 알아보기 (list)

1. List 자료구조와 특징
 list는 연결리스트를 템플릿으로 구현한것이다.
-길이가 가변적이다.
-중간에 데이터 삽입, 삭제가 용이하다
-랜덤 접근은 용이하지 않다.

2. List를 사용해야 하는 이유
-중간에 데이터 삽입이나 삭제가 자주 발생하는 이유
- 순차적으로 저장된 데이터를 빈번하게 검색하지 않을 경우
- 특정 데이터가 저장된 위치를 파악하여 랜덤 접근을 하지 않는 경우


<정리>

-순차 접근은 list,vector 모두 유리하지 않고(map,set이 유리)
-랜덤접근을 사용할 경우 list보다 vector를 사용하는게 유리하다.
-데이터 중간에 삽입,삭제가 많을 경우 vector보다 list를 사용하는게 유리하다.


3. List의 사용
-헤더파일
#include<list>

-형(type)
list<자료형> 변수명
list<자료형>::iterator 변수명
list<자료형>::reverse_iterator 변수명
list<자료형>::size_type 변수명

-메소드 소개

1) begin

첫번째 위치를 가르킨다.

list<string> I;
list<string>::iterator li;

I.push_back("A");
l.push_back("B");
for(li=l.begin();li!=l.end();li++)
  cout<<*li<<endl;


2) end

3)rbegin

역방향으로 첫번째 위치를 가르킨다.

list<string> l;
list<string>:: reverse_iterator li;
l.push_back("A");
l.push_back("B");
for(li=l.rbegin();li!=l.rend();li++)
cout<<*li<<endl;


4)push_front
첫 번째 위치에 데이터 추가

list<string> l;
l.push_front("A");
//마지막 위치에 데이터 추가

5) back
마지막 데이터의 참조반환
string s=l.back();

6)clear
저장하고 있는 모든 데이터 삭제

7) empty
비어있는지 여부 확인

8)insert
지정된 위치에 삽입

list<string> l;
l.insert(l.begin(),"ABC");

9)remove
지정된 값과 일치하는 모든 데이터 삭제
list<int> l;
l.push_back(3);
l.push_back(4);
l.remove(4);

10)sort
데이터 정렬

//오름차순
l.sort()
//내림차순
l.sort(greater<int>);


//함수정의

template <typename T> struct COMPARE
{
 bool operator()(const T l,const T r)const
{
  return l.ItemCd<r.ItemCd;

}

}


l.sort(COMPARE<타입명>());

댓글

이 블로그의 인기 게시물

(ElasticSearch) 결과에서 순서 정렬

(네트워크)폴링방식 vs 롱 폴링방식

(18장) WebSocekt과 STOMP를 사용하여 메시징하기