STL - 큐 First in First Out 구조이다. queue 를 이용한 예제 #include #include using namespace std; /* // 기본적인큐를이용한예제 void main(){ queue qu; qu.push(100); qu.push(200); qu.push(300); while(!qu.empty()){ cout C++/summary 2010.10.27
STL - Map || Stack ·Map은 사전과 같은 자료 구조 ·키(key)가 제시되면 Map은 값(value)을 반환한다 map ( string(키 타입), string(데이타 타입) ) map dic; dic["boy"] = "소년"; 문장을 받아서 단어의 갯수를 파악한다 map을 이용. #include #include #include using namespace std; void main(){ map table; string s; cout> s; table[s]++; if(cin.eof()) break; table[s]--; } map ::iterator it; for(it= table.begin(); it != table.end(); it++) { cout C++/summary 2010.10.25
연관 컨테이너 - 집합 ·수학적인 집합과 비슷 ·집합(set)은 동일한 키를 중복해서 가질 수 없다. ·(예) A = { 1, 2, 3, 4, 5 }는 집합이지만 B = { 1, 1, 2, 2, 3 }은 집합이 아니다. #incldue 가 필요 print_list() 는 함수 템플릿을 이용해서 모든 타입과 itrerator를 이용해서 모든 컨테이너에 접근이 가능하다. 집합에서의 탐색. 값이 없다면 end() 널 갑이라서 거짓이 되므로 .. C++/summary 2010.10.13
리스트 ·외부에서 보면 벡터와 동일 ·이중 연결 리스트로 구현 논리적으로는 순차적이지만, 물리적으로는 아니다. -> 왜 쓰냐?? 배열은데이타를 중간에 넣으면 자리이동을 해야되서 연산 속도가 느려진다. 그리고 1번을 지우면 2,3번을 다시 채워주고 해야되서 느려진다. 리스는 삽입 삭제가 빠르다. 하지만 랜덤접근이 불가능하다. it != it.end(); 마지막이 아닐수도 있기 때문에 이런식으로 한다. C++/summary 2010.10.13
Vector 안의 반복자를 사용 score.begin() 제일 처음 원소로, score.end() 는 마지막 원소의 다음 원소로 데이타가 존재하지 않는다. #include #include using namespace std; void main(){ vector score; while(1){ double value = 0.0; cout> value; if(value highest ) highest = *it; cout C++/summary 2010.10.13
순차 컨테이너 ·벡터 == 동적 배열 == 스마트 배열 ·템플릿으로 설계 ->클래스로 구성되어 자료 구조를 가지고 또한 연산을 가지고 있어 편리하다. 벡터의 예제 ·push_back() ·새로운 데이터를 벡터의 끝에 추가하고 벡터의 크기를 1만큼 증가 -> 자동적으로 사이즈가 증가한다. ·pop_back() ·벡터의 끝에서 요소를 제거하고 벡터의 크기를 하나 감소 -> 사이즈를 선언하지 않고 벡터를 생성 가능하다. 동적 생성이 가능해서. ㅇㄹ C++/summary 2010.10.13
STL ( 표준 템플릿 라이브러리 ) C++ 중요 라이브러리 || 순차 컨테이너 ·STL: 표준 템플릿 라이브러리(Standard Template Library)의 약자로서 많은 프로그래머들이 공통적으로 사용하는 자료 구조와 알고리즘에 대한 클래스 -> 이런 3가지 요소를 가진다. 컨테이너 ( 자료구조 ), 알고리즘( 함수 ), 반복자 ( 표준화 되게 접근가능 하도록 ) ·컨테이너(container) ( 클래스 템플릿 ) ·자료를 저장하는 구조이다. ·벡터, 리스트, 맵, 집합, 큐, 스택과 같은 다양한 자료 구조들이 제공된다. ·반복자(iterator) ·컨테이너 안에 저장된 요소들을 순차적으로 처리하기 위한 컴포넌트 ·알고리즘(algorithm) ( 함수 템플릿 ) ·정렬이나 탐색과 같은 다양한 알고리즘을 구현 순차 컨테이너 ( 배열같이 ) 연관 컨테이너 ( DT가 트리구조로 검.. C++/summary 2010.10.13
클래스 템플릿을 이용하 스택 메모리를 구현해보자. #include using namespace std; class FullStack{}; class EmptyStack{}; template class Stack { private: T *s; int size, top; public: Stack (int n = 100 ) : size(n), top(-1){ s= new T[size]; } ~Stack() { delete []s; } void push(T v); T pop(); bool isEmpty() const { return top == -1; } bool isFull() const { return top == size -1; } }; template void Stack ::push(T v) { if( isFull() ) throw FullStack().. C++/summary 2010.10.11
클래스 템플릿 · 클래스 템플릿(class template): 클래스를 찍어내는 틀(template) 이런식으로 구현이 가능하다. 함수와의 차이는 함수는 하나에 대해서만 했지만, 클래스는 변수나 함수등 여러개를 정의한다. 사용시는 Box b 원래 이렇게 인스턴스 하지만 템플릿클래스는 Box b 로 사용해야한다. 미리 int 형이라고 알려주어야 하기 때문이다. 만들일은 잘 없지만, 많이 사용해야 하기 때문에 잘 알아두어라. 클래스 외부에 정의 2개의 타입을 가지는 템플릿 클래스 C++/summary 2010.10.11