4장 ¶
- 장ì�˜ ì œëª© 그대로ì�˜ ë‚´ìš©ì�´ë‹¤. 프로그램ì�˜ 구조화(함수)와 ë�°ì�´í„°ì�˜ 구조화(구조체) 등등ì�„ ì„¤ëª…í•˜ê³ ìžˆë‹¤.
함수 ¶
- ì „ë‹¬ì�¸ìž�(여기서는 ë°°ì—´)를 ê°’ì—� ì�˜í•œ ì „ë‹¬/참조ì—� ì�˜í•œ ì „ë‹¬ì�„ ì �ì ˆížˆ 사용해야 한다. ì›�래 ê°’ì�„ 보호해야 하는 경우ë�¼ë©´ ê°’ì—� ì�˜í•´ì„œ, ì›�래 ê°’ì�„ 바꿔야하는 경우ë�¼ë©´ 참조ì—� ì�˜í•´ ì „ë‹¬í•œë‹¤.
- ê°’ì—� ì�˜í•œ ì „ë‹¬ì�€ ì „ë‹¬ì�¸ìž�ê°’ì�„ 다른 ê³³ì—� 복사를 해줘서 ì „ë‹¬í•˜ê¸°ì—� ì‹¤ì œ ë�°ì�´í„°ëŠ” 변경ë�˜ì§€ 않는다. 복사ì—� 시간, 메모리 소요.
- 참조ì—� ì�˜í•œ ì „ë‹¬ì�€ ê·¸ ì „ë‹¬ì�¸ìž�ì�˜ 별명(?)ì�„ 넘겨준다. 즉 ê·¸ 변수 ìž�체를 넘겨주는 것ì�´ë‚˜ 다름없다. 즉, 함수 ë‚´ì—�서 ê·¸ ì „ë‹¬ì�¸ìž�로 ì „ë‹¬ë�œ 변수가 바뀌면 ì›�래ì�˜ ê°’ì—�ë�„ 변화가 온다. 그래서 ì �ì ˆížˆ const로 ê°’ì�´ 바뀌지 않ë�„ë¡� ì œí•œí•´ì£¼ëŠ” 것ë�„ 좋다. 복사를 안 하므로 오버헤드를 줄ì�¼ 수 있ì�Œ.
- 1학년 1학기 텀프로ì �트를 í• ë•Œ, 성ì �ì •ë ¬ 프로그램ì—�서 ì •ë ¬ë¡œ 순서가 ì „ë¶€ ë°”ë€Œì–´ë²„ë ¤ì„œ, 루프문ì�˜ ë��ì—�서 ì „ë¶€ 다 초기화했ë�˜ 기억ì�´ 난다. ì�´ë•Œ ì „ë‹¬ì�¸ìž�ì—� ì „ë‹¬ ë°©ì‹�ì�„ ì œëŒ€ë¡œ ì�´í•´í•˜ê³ 활용했다면 편했ì�„ 것ì�„.
- 1학년 1학기 텀프로ì �트를 í• ë•Œ, 성ì �ì •ë ¬ 프로그램ì—�서 ì •ë ¬ë¡œ 순서가 ì „ë¶€ ë°”ë€Œì–´ë²„ë ¤ì„œ, 루프문ì�˜ ë��ì—�서 ì „ë¶€ 다 초기화했ë�˜ 기억ì�´ 난다. ì�´ë•Œ ì „ë‹¬ì�¸ìž�ì—� ì „ë‹¬ ë°©ì‹�ì�„ ì œëŒ€ë¡œ ì�´í•´í•˜ê³ 활용했다면 편했ì�„ 것ì�„.
구조체 ¶
- 구조체 만드는 법ì�€ 다 ì•Œê³ ìžˆìœ¼ë‹ˆ ë„˜ì–´ê°€ê³ , sort()ì—� ì „ë‹¬ì�¸ìž�로 구조체를 넘겨주게 ë�˜ë©´, ì–´ë–¤ 기준으로 ì •ë ¬í• ê²ƒì�¸ì§€ 알 수가 없다. 그래서 3번째 ì „ë‹¬ì�¸ìž�를 ì‚¬ìš©í• ìˆ˜ 있다. 즉,
~cpp sort(students.begin(), students.end(), compare);
- ì�´ë ‡ê²Œ ì‚¬ìš©í•˜ê³ , compareì�˜ ì •ì�˜ë¶€ëŠ”,
~cpp
bool compare(const Student_info& x, const Student_info& y)
{
return x.name<y.name;
}
ì�¸ë�°, compare는 함수ì�¸ë�° 괄호는 ì“°ì§€ 않는다. 괄호를 쓸 경우 ê·¸ ì�¸ìž�까지 알아서 ì�¨ì¤˜ì•¼í• 것 ê°™ì�€ë�°, sortì�˜ ì •í™•í•œ 구조를 잘 모르는 나ì—�ê²� 좀 ë²…ì°¬ 방법ì�´ë‹¤. 하여튼 괄호는 ì“°ì§€ 않는다.compare 함수 í�¬ì�¸í„°ë¥¼ 넘겨주면 students vector(ë˜�는 list)ë‚´ì—�서 ê°’ì�„ 꺼낸다. Student_info 형ì�´ ë‚˜ì˜¤ê² ì§€ ê·¸ 것들ì�„ compare 함수ì—� 넘겨주는 거다. --ì�¸ìˆ˜
>
- 4.3장부터는 여러 í—¤ë�”파ì�¼ê³¼ 소스파ì�¼ë¡œ ë¶„ë¦¬í•´ë†“ê³ ìžˆë‹¤.
ì—�외 처리 ¶
- try{}catch(a){}: try{} 블�� 실행하다가 예외�황� 발�하면 catch{} 블�� 실행한다.
- throw로 예외 ìƒ�황ì�´ ë°œìƒ�ë�˜ì—ˆë‹¤ëŠ” 것ì�„ 알린다. 예외 í�´ëž˜ìŠ¤ì—” 여러개가 있으며, ìƒ�성ìž�로 문ìž�ì—´ì�„ ì§‘ì–´ ë„£ì�„ 수 ìžˆê³ , ì�´ê±´ ì�¼ë°˜ì �으로 ì¶œë ¥ì�´ 안ë�˜ì§€ë§Œ, what()함수로 확ì�¸ 가능.
String í�´ëž˜ìФ ¶
- ì‚¬ì „ìˆœ ì •ë¦¬: <와 >로 비êµ�ê°€ ë�˜ëŠ” 거였다! 문ìž�ë�¼ë¦° ë�˜ëŠ”ì¤„ 알았지만 문ìž�ì—´ë�„ í• ìˆ˜ 있는 거구나...
- width(n) 메소드: ì�´ì „ì�˜ ë„“ì�´ë¥¼ 리턴하며, nì�´ 현재보다 í�´ 경우 나머지 칸ì—� 공백ì�„ 넣는다. nì�´ 0ì�´ë©´ ë„“ì�´ 리셋.
기타 ¶
- max()ë�¼ëŠ” 함수가 ì�˜ì‹¬ìŠ¤ëŸ½ë‹¤. 분명 msdnì—�ë�„ algorithmí—¤ë�”ì—� ìžˆë‹¤ê³ í–ˆëŠ”ë�° 컴파ì�¼í•˜ë©´ ìž�꾸 ì •ì�˜ë�˜ì§€ 않ì�€ ì�´ë¦„ì�´ë�¼ ì—�러를 뱉어낸다. ì�´ 함수ì�˜ ì •ì²´ëŠ”?










