<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Yggdrasil%2F%EA%B0%80%EC%86%8D%EB%90%9C%EC%94%A8%ED%94%8C%ED%94%8C%2F4%EC%9E%A5</id>
	<title>Yggdrasil/가속된씨플플/4장 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Yggdrasil%2F%EA%B0%80%EC%86%8D%EB%90%9C%EC%94%A8%ED%94%8C%ED%94%8C%2F4%EC%9E%A5"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Yggdrasil/%EA%B0%80%EC%86%8D%EB%90%9C%EC%94%A8%ED%94%8C%ED%94%8C/4%EC%9E%A5&amp;action=history"/>
	<updated>2026-05-15T06:40:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=Yggdrasil/%EA%B0%80%EC%86%8D%EB%90%9C%EC%94%A8%ED%94%8C%ED%94%8C/4%EC%9E%A5&amp;diff=40382&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:28, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Yggdrasil/%EA%B0%80%EC%86%8D%EB%90%9C%EC%94%A8%ED%94%8C%ED%94%8C/4%EC%9E%A5&amp;diff=40382&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= 4장 =&lt;br /&gt;
* 장의 제목 그대로의 내용이다. 프로그램의 구조화(함수)와 데이터의 구조화(구조체) 등등을 설명하고 있다.&lt;br /&gt;
== 함수 ==&lt;br /&gt;
* 전달인자(여기서는 배열)를 값에 의한 전달/참조에 의한 전달을 적절히 사용해야 한다. 원래 값을 보호해야 하는 경우라면 값에 의해서, 원래 값을 바꿔야하는 경우라면 참조에 의해 전달한다.&lt;br /&gt;
* 값에 의한 전달은 전달인자값을 다른 곳에 복사를 해줘서 전달하기에 실제 데이터는 변경되지 않는다. 복사에 시간, 메모리 소요.&lt;br /&gt;
* 참조에 의한 전달은 그 전달인자의 별명(?)을 넘겨준다. 즉 그 변수 자체를 넘겨주는 것이나 다름없다. 즉, 함수 내에서 그 전달인자로 전달된 변수가 바뀌면 원래의 값에도 변화가 온다. 그래서 적절히 const로 값이 바뀌지 않도록 제한해주는 것도 좋다. 복사를 안 하므로 오버헤드를 줄일 수 있음.&lt;br /&gt;
** 1학년 1학기 텀프로젝트를 할때, 성적정렬 프로그램에서 정렬로 순서가 전부 바뀌어버려서, 루프문의 끝에서 전부 다 초기화했던 기억이 난다. 이때 전달인자에 전달 방식을 제대로 이해하고 활용했다면 편했을 것을.&lt;br /&gt;
== 구조체 ==&lt;br /&gt;
* 구조체 만드는 법은 다 알고 있으니 넘어가고, sort()에 전달인자로 구조체를 넘겨주게 되면, 어떤 기준으로 정렬할 것인지 알 수가 없다. 그래서 3번째 전달인자를 사용할 수 있다. 즉, &lt;br /&gt;
 sort(students.begin(), students.end(), compare);&lt;br /&gt;
* 이렇게 사용하고, compare의 정의부는, &lt;br /&gt;
 bool compare(const Student_info&amp;amp;amp; x, const Student_info&amp;amp;amp; y)&lt;br /&gt;
 {&lt;br /&gt;
 	return x.name&amp;amp;lt;y.name;&lt;br /&gt;
 }&lt;br /&gt;
인데, compare는 함수인데 괄호는 쓰지 않는다. 괄호를 쓸 경우 그 인자까지 알아서 써줘야할 것 같은데, sort의 정확한 구조를 잘 모르는 나에겐 좀 벅찬 방법이다. 하여튼 괄호는 쓰지 않는다.&lt;br /&gt;
 compare 함수 포인터를 넘겨주면 students vector(또는 list)내에서 값을 꺼낸다. Student_info 형이 나오겠지 그 것들을 compare 함수에 넘겨주는 거다. --[[인수]]&lt;br /&gt;
* 4.3장부터는 여러 헤더파일과 소스파일로 분리해놓고 있다.&lt;br /&gt;
== 에외 처리 ==&lt;br /&gt;
* try{}catch(a){}: try{} 블록을 실행하다가 예외상황이 발생하면 catch{} 블록을 실행한다.&lt;br /&gt;
* throw로 예외 상황이 발생되었다는 것을 알린다. 예외 클래스엔 여러개가 있으며, 생성자로 문자열을 집어 넣을 수 있고, 이건 일반적으로 출력이 안되지만, what()함수로 확인 가능.&lt;br /&gt;
== String 클래스 ==&lt;br /&gt;
* 사전순 정리: &amp;lt;와 &amp;gt;로 비교가 되는 거였다! 문자끼린 되는줄 알았지만 문자열도 할 수 있는 거구나...&lt;br /&gt;
* width(n) 메소드: 이전의 넓이를 리턴하며, n이 현재보다 클 경우 나머지 칸에 공백을 넣는다. n이 0이면 넓이 리셋. &lt;br /&gt;
== 기타 ==&lt;br /&gt;
* max()라는 함수가 의심스럽다. 분명 msdn에도 algorithm헤더에 있다고 했는데 컴파일하면 자꾸 정의되지 않은 이름이라 에러를 뱉어낸다. 이 함수의 정체는? &lt;br /&gt;
----&lt;br /&gt;
[[Yggdrasil/가속된씨플플]]&lt;br /&gt;
[[Yggdrasil]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>