아래는 피보나치 수열을 계산하는 프로그램입니다. 함수의 백터 객체에 그 값을 저장한 뒤에
메인 함수에서 그 객체를 반환받았습니다. 그리고 반환받은 객체값을 가지고 있는 벡터에서,
그 값을 화면에 출력시키려고 합니다.
ppp[5]나, *ppp[5] 뭐, 이런 형식으로 하면 다 에러가 나더군요.. 책을 보니까
cout << (*ppp)[5]
이렇게 해서 객체에 저장된 값을 출력하던데, 저는 왜 (*ppp) 이렇게 괄호를 쓰는지 잘 모르겠네요.
*ppp[5]과 무슨 차이가 있는 건가요...?
알려주시면 고맙겠습니다.. ^^
#include <iostream>
#include <vector>
#include <string>
using namespace std;
const vector<int>* fib( int );
int main()
{
// 함수의 컨테이너의 반환값을 받는다
const vector<int> *ppp = fib(10);
// 객체 출력 형식
cout << (*ppp)[5] << ' ';
return 0;
}
const vector<int>* fib( int n )
{
const int max_size = 1024;
static vector<int> elem;
if( n <= 0 || n > max_size ){
cerr << n << " can't fulfill request. " << endl;
return 0;
}
for( int ix = elem.size(); ix < n; ++ix ){
if( ix == 0 || ix == 1 )
elem.push_back(1);
else {
elem.push_back( elem[ix-1] + elem[ix-2] );
}
}
return &elem;
}
|