티스토리 뷰

Reading Books/Accelerated C++

Chapter. 2, 3

DWGoon 2009. 6. 26. 15:47
Chapter 2.

- 기본 입출력 한번 해보기




- 루프 불변식(loop variant)의 개념에 대한 나만의 간단 정리
: 단순히 loop counter 값 변화가 아니라 어떤 작업을 몇번하게 되는 지에 초점을 맞추어 loop를 작성하는 사고 방식




- for와 while 비교



Chapter 3.

- std::streamsize : 입출력 라이브러리가 크기를 나타내기 위하여 사용하는 타입이다.
(참고 : 
http://msdn.microsoft.com/en-us/library/11zy8h28.aspx 
         
http://www.cs.usyd.edu.au/~kev/pp/RESOURCES/cplusplus/ref/iostream/streamsize.html )

참고 문서에 나와 있는 내용으로는 감이 잘 안 잡힌다. std::streamsize 사용 예를 좀 더 만나봐야 알겠다.



- setprecision을 사용하면 그 다음으로 cout 상에 나타나는 모든 출력에 대한 정밀도를 변경 시킬 수 있다.



(보충 설명은 여기로 :
http://www.cplusplus.com/reference/iostream/manipulators/setprecision/ )



- setprecision 조작자를 더 선호한다고 한다. 정밀도가 별도의 값으로 설정되는 영역을 최소화시킬 수 있기 때문이다.





- cin과 같은 istream을 조건식에 넣으면 bool로 변환된다.
이는 istream에 operator bool()이 적절하게 정의되어 있기 때문이다.
ex.) cin으로부터의 마지막 읽기 시도가 성공했는지 여부를 테스트하는 것

다음과 같은 경우에 스트림으로부터 읽기 시도가 실패로 판정된다.

1. 입력 파일의 끝까지 읽었을 경우
2. 읽으려는 변수의 타입과 호환되지 않는 입력이 들어온 경우
   (int를 읽으려고 했는데, 숫자가 아닌 이상한 값이 오는 경우)
3. 시스템이 입력 장치에 대한 하드웨어 오류를 감지한 경우




- vector 사용하기





- vector 관련 참고하기 (http://msdn.microsoft.com/en-us/library/1sc2e041(VS.80).aspx)





- 일반 정수와 부호 없는 정수가 표현식에 함께 쓰이면, 일반 정수가 부호 없는 정수로 변환된다.





-  라이브러리 구현 시스템은 C++ 표준에서 요구하는 성능 요구사항을 만족시켜야 한다고 한다.
대충 인터페이스만 똑같이 만들어 놓으면 안 된다는 것이다. 책에는 다음과 같이 예를 들어 놓았다.

  • vector를 구현하되, 많은 수의 요소들을 vector에 추가해도 요소의 개수에 비례한 이상의 성능 저하가 나타나서는 안 된다.
  • sort를 구현하되, nlog(n)보다 느려서는 안 된다. 이때, n은 정렬되는 요소들의 개수를 의미한다.

표준 라이브러리는 성능면에서 매우 엄격한 기준 하에 설계되었다고 한다. C++은 성능에 민간함 애플리케이션을 위해 설계되었고 라이브러리도 성능에 많은 신경이 쓰였단다. (이에 반해 Java는 프로그래밍을 개념적으로 보다 쉽게 할 수 있는 것에 무게를 두고 설계되지 않았나 싶다.)

비유적으로 다시 설명해 보면, C++ 표준 라이브러리가 되려면

얼굴하고 몸매만 예쁘면 안 되고 실제로 건강해서 운동도 잘 하고 아이도 잘 낳을 수 있어야 한다는 것..

비유가 마음에 들지 않으신 분은 패스~




- <새삼스레 영어 단어 공부>
modulo : 나머지 값



<참고>
Accelerated C++ / 정보문화사(2006)

'Reading Books > Accelerated C++' 카테고리의 다른 글

Chapter. 10  (0) 2009.07.29
Chapter. 9  (0) 2009.07.28
Chapter. 6  (0) 2009.07.09
Chapter. 5  (0) 2009.07.02
Chapter. 4  (0) 2009.06.29
댓글