검색결과 리스트
글
Chapter 4 - 1. Containers and Algorithms, Libraries
Chapter 4. Containers and Algoritms
4.1 Libraries
프로그래밍 언어에는 라이브러리가 필요하다.
C++ 의 STL 기능들을 살펴볼 것이다.
4.1.1 Standard-Library Overview
제공되는 라이브러리는 아래와 같이 분류됨.
* 런타임 언어 지원 ( 할당과 런타임 타입 정보 )
* C standard library ( 타입시스템에 위배하는 것에 대한 최소한의 수정 )
* 문자열과 I/O 스트림 (국제적 문자셋과 지역화 지원을 포함)
* 컨테이너의 프레임 워크 / 알고리즘
* 숫자 계산
* 정규식 표현
* 동시성 프로그래밍을 위한 지원
* 템플릿 메타 프로그래밍을 위한 유틸들 ( type traits ), 제네릭 프로그래밍, 제너럴 프로그래밍
* 스마트 포인터 / 가비지 콜렉터
* 특별한 목적의 컨테이너 ( array / bitset / tuple )
라이브러리를 써야하는 이유
* 프로그래머의 수준에 상관없이 유용하다
* 오버헤드 없이 일반적인 형태 제공
* 배우기 쉽고 간단한 사용
4.1.2 The Standard-library Headers and Namespace
헤더 포함으로 이용가능, std:: prefix
4.2 Strings
문자열 리터럴에서 제공할 수 있는 정보를 보충하기 위한 string 타입을 제공함.
문자열붙이기 (concatenation) 같은 문자열 연산에 용이.
string 은 move 생성자를 가지고 있으므로 긴 문자열이라도 효율적으로 반환 될 수 있음.
String 은 수정가능하므로 = , += , [], substring 연산들이 지원된다.
또 비교 연산도 가능.
4.3 Stream I/O
포맷팅된 캐릭터 인풋과 아웃풋을 iostream 을 통해 지원한다.
4.3.1 Output
모든 빌트인 타입에 대해 출력을 정의해 놓았음. 또 사용자 정의 타입에 대해서도 아웃풋을 정의하기 용이하다.
<< ("put to") 연산자는 ostream 타입의 객체에 대해 사용되며, 출력을 위해 사용된다.
cerr 는 에러 리포팅을, cout 은 표준 출력을 의미.
cout 으로 쓰여진 값은 기본적으로 문자열의 시퀀스로 변환 된다.
즉 cout << 10; 에서 1다음에 0이 있는 문자열의 시퀀스로 노출되게 된다.
캐릭터 상수는 따옴표로 나타내지며 캐릭터는 숫자가 아닌 문자로 취급된다.
int b = 'b';
char c = 'c';
cout << 'a' << b << c
일때 'b' 는 98이므로 다음과 같이 출력됨 a98c
4.3.2 Input
istream 을 입력을 위해 제공. 반대로 >> ("get from") 연산을 포함
공백은 입력을 종료시키므로 라인을 얻기위해서는 getline() 와 같은 별도함수 필요.
개행문자는 버려진다.
확장을 위한 정립된 방식이 존재하기 때문에 먼저 최대 사이즈를 계산할 필요가 없다.
4.3.3 I/O of User-Defined Types
ostream& operator<<(ostream& os, const Entry& e)
{
return os << e.name << e.number ;
}
와 같이 사용자 정의 타입도 사용가능
비슷하게
istream& operator>>(istream& is, Entry& e)
{
char c,c2;
if (is>>c && c == '{' && is>>c2 )
return is;
else{
is.setf(ios_base::failbit);
return is;
}
}
와 같이 정의된 형식의 입력인지 확인하는 용도로 사용될 수 있다.
is >> c 는 "is 로부터 읽어 c 로 넣는데 성공했는가?" 의 의미를 가진다.
is.get(c) 는 공백을 그냥 넘어가지 않는다. ( 입력한다 )
'The C++ Programming Language > Part 1: Introductory Meterial' 카테고리의 다른 글
Chapter 3 - 1. Abstraction Mechanisms, Classes (0) | 2014.06.22 |
---|---|
Chapter 2 - 2. The Basics, Error Handling (0) | 2014.06.22 |