목차 일부
용어 대역표 ... 19
시작하면서 ... 25
0 시작 전 몸풀기
0.1 주석 ... 32
0.2 include ... 32
0.3 main 함수 ... 33
0.4 중괄호 ... 34
0.5 표준 라이브러리를 사용하여 출력하기 ... 34
0.6 return 문 ... 35
0.7 살짝 깊이 들여다 보기 ... 35...
더보기
목차 전체
용어 대역표 ... 19
시작하면서 ... 25
0 시작 전 몸풀기
0.1 주석 ... 32
0.2 include ... 32
0.3 main 함수 ... 33
0.4 중괄호 ... 34
0.5 표준 라이브러리를 사용하여 출력하기 ... 34
0.6 return 문 ... 35
0.7 살짝 깊이 들여다 보기 ... 35
0.8 내용 정리 ... 38
연습문제 ... 40
1 문자열 처리하기
1.1 입력 ... 44
1.2 이름에 테두리 만들기 ... 47
1.3 내용 정리 ... 51
연습문제 ... 52
2 루프와 카운트
2.1 문제점 ... 56
2.2 전체 구조 ... 56
2.3 알 수 없는 개수의 행 출력하기 ... 57
2.3.1 while 문 ... 58
2.3.2 while 문 설계 ... 60
2.4 행 출력하기 ... 62
2.4.1 경계 문자 출력하기 ... 64
2.4.2 비경계 문자 출력하기 ... 67
2.5 완전한 테두리를 갖는 프로그램 ... 69
2.5.1 std::의 반복적인 사용을 축약 ... 69
2.5.2 간결함을 위해 for 문 사용하기 ... 70
2.5.3 테스트 합치기 ... 71
2.5.4 완전한 테두리 프로그램 ... 72
2.6 카운팅 ... 74
2.7 내용 정리 ... 75
연습문제 ... 79
3 일괄 데이터로 작업하기
3.1 학생 성적 계산하기 ... 82
3.1.1 입력의 끝 테스트하기 ... 87
3.1.2 루프 불변식 ... 89
3.2 평균 대신 중앙 값 사용하기 ... 90
3.2.1 vector에 일련의 데이터 저장하기 ... 90
3.2.2 출력하기 ... 92
3.2.3 몇 가지 추가적으로 살펴볼 점 ... 98
3.3 내용 정리 ... 100
연습문제 ... 101
4 프로그램과 데이터의 구조화
4.1 계산 처리 구조화하기 ... 104
4.1.1 중앙 값 찾기 ... 106
4.1.2 성적 계산식 다시 구현하기 ... 107
4.1.3 과제성적 읽기 ... 109
4.1.4 함수 매개변수 양식 세 가지 ... 113
4.1.5 함수를 사용해서 성적 계산하기 ... 114
4.2 데이터 구조화하기 ... 117
4.2.1 학생의 데이터를 모두 함께 저장하기 ... 118
4.2.2 학생 레코드 관리하기 ... 118
4.2.3 보고서 양식 출력하기 ... 121
4.3 모두 합치기 ... 123
4.4 성적 산출 프로그램을 쪼개기 ... 126
4.5 개선된 성적 산출 프로그램 ... 129
4.6 내용 정리 ... 131
연습문제 ... 133
5 순차 컨테이너의 사용 및 문자열 분석
5.1 학생들을 카테고리별로 분류하기 ... 136
5.1.1 원하는 요소 삭제하기 ... 137
5.1.2 순차 접근과 임의 접근 ... 140
5.2 반복자(Iterator) ... 141
5.2.1 반복자 타입 ... 142
5.2.2 반복자 연산 ... 143
5.2.3 간편한 사용법 ... 144
5.2.4 students.erase(students.begin() + i)의 뜻 ... 145
5.3 인덱스 대신 반복자 사용하기 ... 145
5.4 성능 향상을 위해 자료구조를 다시 고민하기 ... 147
5.5 list 타입 ... 148
5.5.1 중요한 차이점 ... 150
5.5.2 도대체 어떤게 좋다는 거죠? ... 151
5.6 string 분석하기 ... 151
5.7 split 함수 테스트하기 ... 155
5.8 string 합치기 ... 157
5.8.1 그림의 외곽 그리기 ... 157
5.8.2 수직 결합 ... 160
5.8.3 수평 결합 ... 161
5.9 내용 정리 ... 163
연습문제 ... 167
6 라이브러리 알고리즘 사용하기
6.1 string 분석사기 ... 172
6.1.1 split하는 또 다른 방법 ... 174
6.1.2 회문(Palindromes) ... 177
6.1.3 URL 찾기 ... 178
6.2 성적 계산법의 비교 ... 183
6.2.1 학생 레코드 다루기 ... 184
6.2.2 성적 분석하기 ... 185
6.2.3 평균 과제 성적에 기반한 성적 계산 ... 189
6.2.4 완료된 과제의 중앙 값 ... 191
6.3 학생 분류 문제 재시도 ... 192
6.3.1 2-패스 솔루션 ... 192
6.3.2 단일-패스 솔루션 ... 195
6.4 알고리즘, 컨테이너 그리고 반복자 ... 196
6.5 내용 정리 ... 197
연습문제 ... 199
7 연관 컨테이너 사용하기
7.1 효과적인 참조 방법을 제공하는 컨데이너 ... 202
7.2 단어 개수 세기 ... 203
7.3 교차-참조 테이블 생성 ... 205
7.4 문장 생성하기 ... 210
7.4.1 규칙 표현하기 ... 211
7.4.2 문법 읽어들이기 ... 212
7.4.3 문장 생성하기 ... 214
7.4.4 무작위 요소를 선택하기 ... 218
7.5 성능에 관하여 ... 220
7.6 내용 정리 ... 220
연습문제 ... 222
8 제네릭 함수 작성하기
8.1 제네릭 함수란? ... 226
8.1.1 알려지지 않은 타입의 중앙 값 ... 227
8.1.2 템플릿 인스턴스화 ... 229
8.1.3 제네릭 함수와 타입 ... 230
8.2 자료구조 독립성 ... 231
8.2.1 알고리즘과 반복자 ... 231
8.2.2 순차적 읽기-전용 접근 ... 234
8.2.3 순차적 쓰기-전용 접근 ... 235
8.2.4 순차적 읽기-쓰기 접근 ... 237
8.2.5 역방향으로 접근 ... 238
8.2.6 임의 접근 ... 238
8.2.7 반복자 범위 및 끝 지난 값 ... 240
8.3 입력 및 출력 반복자 ... 241
8.4 융통성을 위해 반복자 사용하기 ... 243
8.5 내용 정리 ... 245
연습문제 ... 246
9 새로운 타입 정의하기
9.1 Student_info 되짚어 생각하기 ... 250
9.2 Class 타입 ... 251
9.2.1 멤버 함수 ... 252
9.2.2 비멤버 함수들 ... 255
9.3 보호정책(Protection) ... 256
9.3.1 접근 함수(Accessor function) ... 258
9.3.2 비어있는지 테스트 ... 259
9.4 Student_info 클래스 ... 260
9.5 생성자(Constructor) ... 261
9.5.1 기본 생성자 ... 263
9.5.2 인자를 사용하는 생성자 ... 264
9.6 Student_info 클래스 사용하기 ... 264
9.7 내용 정리 ... 266
연습문제 ... 267
10 메모리 관리 및 저수준 자료구조
10.1 포인터와 배열 ... 270
10.1.1 포인터 ... 271
10.1.2 함수에 대한 포인터 ... 273
10.1.3 배열 ... 276
10.1.4 포인터 산술 연산 ... 277
10.1.5 인덱싱(Indexing) ... 279
10.1.6 배열 초기화 ... 279
10.2 문자열 리터럴 다시 살펴보기 ... 280
10.3 문자 포인터 배열 초기화하기 ... 281
10.4 main에 대한 인자들 ... 283
10.5 파일 읽기 및 쓰기 ... 285
10.5.1 표준 에러 스트림 ... 285
10.5.2 여러 입력 파일과 출력 파일 다루기 ... 285
10.6 메모리 관리의 세 종류 ... 288
10.6.1 객체 할당 및 해제 ... 289
10.6.2 배열 할당 및 해제 ... 290
10.7 내용 정리 ... 291
연습문제 ... 293
11 추상 데이터 타입 정의하기
11.1 Vec 클래스 ... 296
11.2 Vec 클래스 구현하기 ... 297
11.2.1 메모리 할당 ... 298
11.2.2 생성자(Constructors) ... 299
11.2.3 타입 정의 ... 301
11.2.4 인덱스 및 size ... 302
11.2.5 반복자를 리턴하는 연산 ... 305
11.3 Copy 처리하기 ... 306
11.3.1 Copy 생성자 ... 306
11.3.2 대입(Assignment) ... 308
11.3,3 대입은 초기화가 아니다 ... 311
11.3.4 소멸자(Destructor) ... 313
11.3.5 디폴트 연산(Default operations) ... 314
11.3.6 세 법칙(rule of three) ... 315
11.4 동적인 Vec ... 316
11.5 융통성있는 메모리 관리 ... 318
11.5.1 최종 Vec 클래스 ... 320
11.6 내용 정리 ... 325
연습문제 ... 327
12 값(value)처럼 동작하는 클래스 객체 만들기
12.1 단순한 문자열 클래스 ... 330
12.2 자동 변환(Automatic conversions) ... 332
12.3 Str 연산들 ... 333
12.3.1 입ㆍ출력 연산자들 ... 335
12.3.2 프렌드(Friend) ... 336
12.3.3 다른 이항 연산자들 ... 339
12.3.4 혼합-타입 표현식(Mixed-type expressions) ... 341
12.3.5 이항 연산자 설계하기 ... 342
12.4 어떤 변환은 위험하다 ... 343
12.5 변환 연산자 ... 344
12.6 변환 및 메모리 관리 ... 346
12.7 내용 정리 ... 348
연습문제 ... 349
13 상속 및 동적 바인딩 사용하기
13.1 상속(Inheritance) ... 352
13.1.1 보호정책(protection)에 대해서 다시 살펴보기 ... 354
13.1.2 연산 ... 355
13.1.3 상속 및 생성자 ... 357
13.2 다형성(Polymorphism)및 virtual 함수 ... 359
13.2.1 객체의 타입을 모르는 상태에서 값을 얻기 ... 361
13.2.2 동적 바인딩(Dynamic binding) ... 362
13.2.3 요약 ... 364
13.3 상속을 통해 문제 해결하기 ... 365
13.3.1 알지 못하는(가상적으로) 타입에 대한 컨테이너 ... 369
13.3.2 가상 소멸자(Virtual destructor) ... 372
13.4 간단한 핸들 클래스(handle class) ... 373
13.4.1 핸들 읽기 ... 376
13.4.2 핸들 객체 복사 ... 377
13.5 핸들 클래스 사용하기 ... 379
13.6 미묘한 부분들 ... 380
13.6.1 상속 및 컨테이너 ... 381
13.6.2 어떤 함수를 원하나요? ... 381
13.7 내용 정리 ... 382
연습문제 ... 385
14 메모리를 (거의) 자동으로 관리하기
14.1 객체를 복사하는 핸들 ... 388
14.1.1 제네릭 핸들 클래스(generic handle class) ... 389
14.1.2 제네릭 핸들 사용하기 ... 394
14.2 레퍼런스 카운트되는 핸들 ... 397
14.3 데이터를 공유해야 될 때가 언제인지를 알려주는 핸들 ... 401
14.4 제어가능 핸들에 대한 개선 ... 403
14.4.1 제어할 수 없는 타입 복사하기 ... 405
14.4.2 언제 복사가 필요할까요? ... 407
14.5 내용 정리 ... 408
연습문제 ... 408
15 문자 그림 다시 살펴보기
15.1 설계 ... 410
15.1.1 상속을 사용하여 구조 모델링하기 ... 411
15.1.2 Pic_base 클래스 ... 414
15.1.3 파생 클래스 ... 417
15.1.4 복사 제어(Copy control) ... 421
15.2 구현 ... 421
15.2.1 사용자 인터페이스 구현하기 ... 422
15.2.2 String_Pic 클래스 ... 425
15.2.3 출력에 칸 삽입하기(padding) ... 427
15.2.4 VCat_Pic 클래스 ... 428
15.2.5 HCat_Pic 클래스 ... 430
15.2.6 Frame_Pic 클래스 ... 431
15.2.7 friend를 잊지 마세요 ... 432
15.3 내용 정리 ... 435
연습문제 ... 436
16 이제 어디로 갈까요?
16.1 자기만의 추상개념을 사용할 것 ... 440
16.2 더 많이 배울 것 ... 442
연습문제 ... 443
A 언어 세부사항
A.1 선언문(Declarations) ... 446
A.1.1 지정자(Specifiers) ... 448
A.1.2 선언자(Declarators) ... 449
A.2 타입(Types) ... 452
A.2.1 정수형 타입(Integral types) ... 453
A.2.2 부동 소수점 실수(Floating point) ... 457
A.2.3 상수 표현식(Constant expressions) ... 457
A.2.4 변환(Conversions) ... 458
A.2.5 열거형 타입(Enumerated types) ... 459
A.2.6 오버로딩(Overloading) ... 460
A.3 표현식(Expressions) ... 460
A.3.1 연산자(Operators) ... 464
A.4 구문(Statements) ... 464
B 라이브러리 요약
B.1 입력-출력(Input-output) ... 468
B.2 컨테이너와 반복자(Containers and iterators) ... 471
B.2.1 일반적인 컨테이너 연산 ... 472
B.2.2 순차적 컨테이너(Sequential containers) ... 473
B.2.3 추가적인 순차적 연산 ... 474
B.2.4 연관 컨테이너(Associative containers) ... 475
B.2.5 반복(Iterators) ... 476
B.2.6 vector ... 478
B.2.7 list ... 479
B.2.8 string ... 480
B.2.9 pair ... 481
B.2.10 map ... 481
B.3 알고리즘(Algorithms) ... 482
찾아보기 ... 487
더보기 닫기