[질문]STL 공부하다가..
글쓴이: crom123 / 작성시간: 토, 2003/11/22 - 2:07오전
int main() { typedef list<int> list_any; list_any list_some; typedef list_any::iterator list_anyIter; list_anyIter start, end, it; start = list_some.begin(); generate_n(inserter(list_some, start), 7, Fibonacci); //또는 generate_n(inserter( list_some, list_some.begin() ), 7, Fibonacci); return 0; }
이렇게 하면 되구요.
int main() { list<int> list_any; list<int>::iterator list_anyIter; // list_anyIter start; start = list_anyIter.begin(); generate_n(inserter(list_any, start), 7, Fibonacci); //<- 이 부분에서 에러가 발생합니다. return 0; }
에러 코드 입니다.(VC6.0-STLport라이브러리 사용)
error C2065: 'start' : undeclared identifier error C2039: 'begin' : is not a member of '_List_iterator<int,struct _STL::_Nonconst_traits<int> >'
* Fibonacci는 그냥 피보나치 수열을 발생시키는 함수입니다.
typedef의 역할이 뭔가여?
STL을 사용하기 전에는 typedef는 그냥 구조체 선언할 때 별 신경안쓰고 썼는데.. 뭔가 역할이 있는 듯한데요..
Forums:
typedef는 기존의 타입을 다른 이름으로 설정하는것입니다별칭
typedef는 기존의 타입을 다른 이름으로 설정하는것입니다
별칭을 만들어 쓰는것이죠
타입이름이 길어서 줄여 쓸때 씁니다
일반적으로 C책에 나오는 내용이죠
C++를 배우시더라도 C의 내용도 배워 볼만합니다
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
...
이렇게 고치시면 될겁니다.(테스트는 안해봤음) typedef 는 타입 이름에 대한 별명(alias)이라고 생각하시면 됩니다.
예를 들어 typedef int myInt; 라고 써주면 이 선언 이후로 int 를 써야할 자리에 myInt 를 써도 상관없다는 겁니다.
typedef는 신경 안쓰고 넘어갈만한 게 아닙니다^^; 역할은 단순히 별명을 만들어주는 거지만 클래스의 멤버로 template 과 함께 쓰이면 대단한 위력을 발휘합니다. typedef 에 대해서 책을 자세히 읽어보세요.
...써놓고 보니 다른 분이 이미 답변을 다셨군요. 이 시간에 이리 빨리 답변이 올라오다니 놀랍습니다 :)
만일 단지 typedef가 별칭을 선언하는거라면두번째 소스에서 gen
만일 단지 typedef가 별칭을 선언하는거라면
두번째 소스에서 generator_n에서 start를 써도 상관없는 거 아닙니까?
첫번째 소스에서는 start를 써도 되고 list_some.begin으로 써도 상관없든데요..
아직도 아리송한데요..ㅠ.ㅠ;
Re: [질문]STL 공부하다가..
두번째 소스에 대해서는 이미 질문내용에 답이 있습니다.
start는 undeclared이기 때문에 발생한 오류입니다. 위에 defintion을 comment처리 하셨습니다. 아마 이 내용은 알고 계실 것 같습니다.
begin()의 문제는 begin이 list_anyIter 즉, List_iterator<int,struct _STL::_Nonconst_traits<int> >의 member가 아니라는 것입니다.
code로만 보았을 때는 아마도 list_any의 member인 것으로 생각됩니다.
To be a rich
댓글 달기