-
STL List(1)@ 16. 1 ~ 17. 1/STL 2013. 2. 11. 02:10
STL list를 사용하면 좋은점
* 연결리스트를 따로 만들어야 하는 시간을 절약할 수 있다.
사용해야 하는 이유
1. 저장할 데이터 개수가 가변적이다.
- 저장 공간의 크기가 자동으로 변하므로 유연하게 사용할 수 있다.
2. 중간에 데이터 삽입이나 삭제가 자주 일어나는 경우
3. 데이터를 랜덤하게 접근하는 경우가 많지 않다.
- list의 경우 순차접근만 가능하므로 랜덤접근의 경우 비효율적
사용법
#include<list>를 포함하고
list형식은
list<자료형> 변수 이름
list<int> list1;
동적할당도 가능하다.
list<자료형>* 변수이름 = new list<자료형>;
list<char>* list1=new list<char>;
리스트에 접근을 하려면 반복자를 사용해야한다. Iterator
포인터의 일반화된 개념이라고 봐도 된단다. 무슨이야기냐하면..
포인터와 비슷하게 ++ --로 이동하고 대입과 비교도 가능하다..
STL 컨테이너<자료형>::iterator 변수이름
begin()은 첫번째 요소를 가리키는 반복자를 리턴한다
즉, list<int>::iterator listfirst=list1.begin(); 이런식으로..
end()도 있다 근데 마지막 요소의 바로 다음을 가리킨다. 즉 사용할 수 없는 부분을 가르킨다는 것
앞에 r이 붙으면 반대방향으로 전환된다.
rbegin()은 뒤에서 시작하는 첫번째 요소..rend()이것은..반대방향의 마지막 다음
#include
#include #include - //stl list를 사용하기 위해서 포함
using namespace std;
class Point
{
private:
int num;
public:
Point() {};
Point(int n) : num(n) {};
void Showdata()
{
cout << num << endl;
}
};
class Rect
{
public:
Rect(){}
};
int main()
{
list
plist; //list 자료형은 Point클래스로 plist의 변수를 생성 Point pos1(1); //pos1 객체 생성하고 plist.push_front(pos1); //plist의 맴버함수인 push_front를 이용하여 앞에 pos1를 넣고 Point pos2(2); plist.push_front(pos2); //동일하게 pos1 앞에 pos2를 넣는다..그래서 출력자체가 21가 되는것. Point pos3(3); plist.push_back(pos3); //pos1 뒤에 pos3을 넣고 Point pos4(4); plist.push_back(pos4); //pos3뒤에 pos4를 넣어서 최종 2134가 출력된다. /* 아래는 반복자를 이용하여 변수를 선언함. 리스트에 접근하기 위해서 list ::iterator pEnd; */ list ::iterator pEnd=plist.end(); ///end를 이용하여 가장 마지막 위치의 다음을 pEnd라는 변수에 넣고 list ::iterator pFirst=plist.begin(); //begin을 이용하여 가장 처음의 위치를 pFirst라는 변수에 넣고 for(;pFirst!=pEnd;pFirst++) //포인터처럼 접근이 가능한 ++ { cout << "Point의 값"; pFirst->Showdata(); //포인터처럼 접근이 가능한 -> } plist.pop_back(); //맨 마지막 데이터를 삭제하고. Point back=plist.back(); //맨 마지막 위치의 데이터의 참조값을 반환..그래서 동일한 Point형식의 back을 생성하여 대입.. back.Showdata(); getch(); return 0; } '@ 16. 1 ~ 17. 1 > STL' 카테고리의 다른 글
컨테이너 & 반복자 & 알고리즘 & 함수객체 (0) 2014.04.10 STL list 주요 특징 정리 (0) 2013.05.27 STL vector / deque 주요 특징 정리 (0) 2013.05.27 vector<STL> 사용하기(2) (0) 2013.03.18 vector<STL> 사용하기 (0) 2013.03.10