1) 함수 선언에 직접 정의하는 배열 포인터 예제.


2) typedef 를 이용하여 새로운 자료형을 만든 후, 그것을 사용하는 예제.


'Programming > C++' 카테고리의 다른 글

getopt Function Example  (0) 2013.09.25
qsort Function Example  (0) 2013.09.25
const 객체와 const 객체의 특성성  (0) 2013.08.13
복사 생성자의 완벽한 이해  (0) 2013.08.12
3n+1 문제  (0) 2013.03.27
Posted by scii
:



'Programming > C++' 카테고리의 다른 글

배열 포인터 ( 배열을 가리킬 수 있는 포인터)  (0) 2013.09.27
qsort Function Example  (0) 2013.09.25
const 객체와 const 객체의 특성성  (0) 2013.08.13
복사 생성자의 완벽한 이해  (0) 2013.08.12
3n+1 문제  (0) 2013.03.27
Posted by scii
:





'Programming > C++' 카테고리의 다른 글

배열 포인터 ( 배열을 가리킬 수 있는 포인터)  (0) 2013.09.27
getopt Function Example  (0) 2013.09.25
const 객체와 const 객체의 특성성  (0) 2013.08.13
복사 생성자의 완벽한 이해  (0) 2013.08.12
3n+1 문제  (0) 2013.03.27
Posted by scii
:


객체도 상수화할 수 있다.

const instance ist(20);

이렇게 객체에 const 선언을 붙이게 되면, 이 객체를 대상으로는 const method 만 호출이 가능하다. 이는 객체의 const 선언이 다음의 의미를 갖기 때문이다.

"이 객체의 데이터 변경을 허용하지 않겠다."

때문에 const method 만 호출이 가능한 것이다. 


※ 멤버 변수에 저장된 값을 수정하지 않는 함수는 가급적 const로 선언해서, const 객체에서도 호출이 가능하도록 할 필요가 있다. 


const 와 함수 오버로딩

함수 오버로딩이 성립하려면 매개변수의 수나 자료형이 달라야 한다. 하지만 다음과 같이 const의 선언유무도 함수 오버로딩의 조건에 해당이 된다.

void simple() {    }

void simple() {    } const




'Programming > C++' 카테고리의 다른 글

getopt Function Example  (0) 2013.09.25
qsort Function Example  (0) 2013.09.25
복사 생성자의 완벽한 이해  (0) 2013.08.12
3n+1 문제  (0) 2013.03.27
List 자료구조로 만든 프로그램  (0) 2013.03.20
Posted by scii
:


복사 생성자에서 임시 객체의 이해




임시객체는 메모리에 저장되고, 그 객체의 참조 값이 반환된다.

임시 객체의 특성:

- 임시 객체는 다음 행으로 넘어가면 바로 소멸되어 버린다.

- 참조자에 참조되는 임시 객체는 바로 소멸되지 않는다.


언뜻 보면, tempRef 라는 새로운 객체를 생성해서, 반환되는 객체를 가지고 대입 연산을 진행하는 것처럼 보인다. 

그러나 위의 예제에서 0x7fff88301b40 주소 값이 임시 객체이다. 이 임시 객체는 tempRef라는 이름을 붙여주고 있기 때문에, 다음 행에 넘어가도 사라지지 않는다.


이것을 상당히 중요하다고 생각한다. 객체의 생성 수를 하나 줄여서 메모리 효율성을 높이기 때문이다.


'Programming > C++' 카테고리의 다른 글

qsort Function Example  (0) 2013.09.25
const 객체와 const 객체의 특성성  (0) 2013.08.13
3n+1 문제  (0) 2013.03.27
List 자료구조로 만든 프로그램  (0) 2013.03.20
namespace (이름 공간)  (0) 2013.03.17
Posted by scii
:

3n+1 문제

Programming/C++ 2013. 3. 27. 14:54 |


어떤 수열을 만들어내는 다음과 같은 알고리즘을 생각해보자. 어떤 정수 n에서 시작해 n이 짝수면 2로 나누고, 홀수면 3을 곱한 다음 1을 더한다. 이렇게 해서 새로 만들어진 숫자를 n으로 놓고 n=1 이 될 때까지 같은 작업을 계속 반복한다. 

예를 들어, n=22 이면 다음과 같은 수열이 만들어진다.

22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

아직 증명되진 않았지만 모든 정수 n에 대해 이 알고리즘을 적용시키면 결국에는 n=1 에 이르게 되는 것으로 추측된다. 그리고 이 가설은 적어도 1,000,000 까지의 정수에 대해서는 참이다. 

n이라는 값이 입력되었을 때 1이 나올 때까지 만들어진 수의 개수를 n의 사이클 길이(cycle-length) 라고 한다. 


문제가 이것이였다. 그래서 Linked-List 자료구조로 한번 만들어 보았다. 여기 문제에서는 1백만번까지의 정수에 대해 참이라고 해서, 한번 2백만번까지 돌려보았다. 2백만번 까지도 참이었다. 그 이상은 안해보아서 모르겠다. 

그리고, 결과 값을 보니 중첩되는 숫자가 없어 혹시나해서 몇번이고 테스트를 해보았다. 신기하게도 중복되는 숫자가 없었다. 

오오~ 아직은 어느 상황에서 쓰면 좋을 지 감이 잘 오지않지만, Houdini에서 중복되는 숫자가 없어야 하는 상황에서 이 알고리즘을 적용해서 쓰면 괜찮겠다는 생각이 든다.


DLinkedList.cpp

DLinkedList.h

ques.cpp

 


실행 결과

과과






The_three_algorithm.c


'Programming > C++' 카테고리의 다른 글

const 객체와 const 객체의 특성성  (0) 2013.08.13
복사 생성자의 완벽한 이해  (0) 2013.08.12
List 자료구조로 만든 프로그램  (0) 2013.03.20
namespace (이름 공간)  (0) 2013.03.17
template을 이용한 inline 함수  (0) 2013.03.17
Posted by scii
:

자료구조 복습 겸, C++ 복습 겸해서 한번 만들어 보았다.


account.cpp

account.h

List.cpp

List.h

main.cpp


list header file

list source file


account header file

account source file


main file


실행 결과


'Programming > C++' 카테고리의 다른 글

복사 생성자의 완벽한 이해  (0) 2013.08.12
3n+1 문제  (0) 2013.03.27
namespace (이름 공간)  (0) 2013.03.17
template을 이용한 inline 함수  (0) 2013.03.17
C++ Language의 창시자 홈페이지  (0) 2012.11.29
Posted by scii
:


이 하나의 예제로 이름공간의 거의 모든 것이 설명되어짐.




'Programming > C++' 카테고리의 다른 글

3n+1 문제  (0) 2013.03.27
List 자료구조로 만든 프로그램  (0) 2013.03.20
template을 이용한 inline 함수  (0) 2013.03.17
C++ Language의 창시자 홈페이지  (0) 2012.11.29
C++ Language Tutorial 사이트  (0) 2012.11.20
Posted by scii
: