29장. 템플릿과 STL 01_ 템플릿 02_ STL.

Slides:



Advertisements
Similar presentations
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
Advertisements

C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
최윤정 Java 프로그래밍 클래스 상속 최윤정
컴퓨터 프로그래밍 기초 [Final] 기말고사
8. 객체와 클래스 (기본).
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
윤 홍 란 다형성과 가상 함수 윤 홍 란
자료 구조: Chapter 3 (2)구조체, 포인터
7장 배열 ②.
10장 템플릿과 표준 템플릿 라이브러리(STL)
Visual C++ Programming Controls and CList
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
제15장 STL과 람다식 STL의 개념을 이해하고 사용할 수 있다. 람다식을 이해하고 사용할 수 있다.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 9. 예외처리.
Lesson 6. 형변환.
제 3장. C보다 나은 C++ II.
Visual C++ Programming Common Controls
명품 C++ 7장 프렌드와 연산자 중복.
1. C++ 시작하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
26. 매크로와 전처리기.
정적 멤버 변수/정적 멤버 함수 - friend 함수/클래스 template
C++ Espresso 제12장 템플릿.
프로그래밍 랩 – 7주 리스트.
14장. 포인터와 함수에 대한 이해.
제네릭 함수 작성하기 WRITING GENERIC FUNCTIONS
14. 예외처리.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
11장. 1차원 배열.
C#.
13. 연산자 오버로딩.
제14장 예외처리와 템플릿 예외 처리의 개요를 학습한다. 예외 처리를 적용할 수 있다. 템플릿의 개념을 이해한다.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
명품 C++ 9장 가상 함수와 추상 클래스.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
24장. 파일 입출력.
19. 함수 포인터와 void 포인터.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 5.0 프로그래밍.
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
CHAP 21. 전화, SMS, 주소록.
객체기반 SW설계 팀활동지 4.
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
제 11장. 템플릿과 STL 학기 프로그래밍언어및실습 (C++).
데이터 동적 할당 Collection class.
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
Chapter 13. 템플릿(Template) 1
Chapter 2 C++ 함수와 네임스페이스. 최호성.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
10장 템플릿과 표준 템플릿 라이브러리(STL)
발표자 : 이지연 Programming Systems Lab.
구조체(struct)와 공용체(union)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
Chapter 14. 템플릿(Template) 2
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
13. 포인터와 배열! 함께 이해하기.
C++ Espresso 제15장 STL 알고리즘.
7 생성자 함수.
6 객체.
Presentation transcript:

29장. 템플릿과 STL 01_ 템플릿 02_ STL

템플릿 클래스의 사용(1) 모든 타입의 배열을 위한 스마트 포인터 클래스 template <typename T> class AutoArray { public: AutoArray(T* ptr) _ptr = ptr; } ~AutoArray() delete[] _ptr; T& operator[] (int index) return _ptr[index]; private: T* _ptr; }; int main() AutoArray<float> arr( new float [100] ); arr[0] = 99.99f; return 0;

템플릿 클래스의 사용(2) 템플릿 클래스의 객체를 생성하는 순간에 컴파일러 내부적으로 알맞은 클래스를 만든다. 개발자가 만든 코드 컴파일러에 의해 생성된 클래스 template< typename A, typename B, int MAX > class TwoArray { // 중간 생략 A arr1[ MAX ]; B arr2[ MAX ]; }; TwoArray< char, double, 20 > arr; class TwoArray_char_double_20 // 이 이름은 임의로 만든 것 { // 중간 생략 char arr1[ 20 ]; double arr2[ 20 ]; };

템플릿 클래스의 사용(3) 템플릿 매개 변수의 사용 [29-1]

템플릿 함수의 사용 모든 타입을 위한 max() 함수 template<typename T> T max(T a, T b) { return (a > b ? a : b); } int main() int i1 = 5, i2 = 3; int i3 = max(i1, i2); // i3 = 5 double d1 = 0.9, d2 = 1.0; double d3 = max(d1, d2); // d3 = 1.0 return 0;

템플릿 사용 시 유의할 점 템플릿은 컴파일 시간에 코드를 만들어낸다. 템플릿 함수의 정의는 헤더 파일에 놓여야 한다. 그렇기 때문에 템플릿의 사용으로 인한 속도 저하는 생기지 않는다. 하지만, 컴파일 시간이 오래 걸리는 단점이 있다. (하지만 크게 문제가 될 정도는 아님) 템플릿 함수의 정의는 헤더 파일에 놓여야 한다. 컴파일 시간에 클래스나 함수를 만들어내기 위해서는 헤더 파일에 위치할 필요가 있다. (컴파일 시간에는 다른 구현 파일의 내용을 확인할 수 없다. )

STL 컨테이너(1) list 클래스를 사용하는 예 #include <list> #include <iostream> int main() { // int 타입을 담을링크드 리스트 생성 std::list<int> intList; // 1 ~ 10까지 링크드 리스트에 넣는다. for (int i = 0; i < 10; ++i) intList.push_back( i); // 5를 찾아서 제거한다. intList.remove( 5); // 링크드 리스트의 내용을 출력한다. std::list<int>::iterator it; for (it = intList.begin(); it != intList.end(); ++it) std::cout << *it << "\n"; return 0; }

STL 컨테이너(2) list 클래스의 탐색 [29-2]

STL 컨테이너(3) 자주 사용하는 STL의 컨테이너 클래스 [표 29-1]

STL 알고리즘(1) sort() 함수를 사용하는 예 #include <algorithm> #include <vector> #include <iostream> int main() { // 동적 배열을 생성해서 임의의 영문자를 추가한다. std::vector<char> vec; vec.push_back( 'e'); vec.push_back( 'b'); vec.push_back( 'a'); vec.push_back( 'd'); vec.push_back( 'c'); // sort() 함수를 사용해서 정렬한다. std::sort( vec.begin(), vec.end() ); // 정렬 후 상태를 출력한다. std::cout << "vector 정렬 후\n"; std::vector<char>::iterator it; for (it = vec.begin(); it != vec.end(); ++it) std::cout << *it; return 0; }

STL 알고리즘(1) 자주 사용하는 STL의 알고리즘 함수 [표 29-2]