Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[1649] Re:STL에서 이런 기능을 구현하는 방법은 없나요.....
김백일 [cedar] 1457 읽음    2002-11-28 01:16
exkarion 님이 쓰신 글 :
: 안녕하세요...허접 C++ 유접니다. ^^
:
: 만약 tm 이라는 구조체가 있는데.....
:
: tm start; // 이미 데이터가 들어 있는 구조체 변수
:
: tm tm_array[5]; // 배열을 선언
:
: tm_array[0] = start; // 이렇게 하면 당연히 '=' 의 오버로딩이 없어서 제대로 할당이 안됩니다.

아닙니다. 제대로 대입되어야 맞습니다.

struct tm {
  int a, b;
};

tm tm1, tm2;

// 중간 생략

tm1 = tm2;

라고 하면,

tm1.a = tm2.a;
tm1.b = tm2.b;

라고 한 것과 동일한 결과입니다.

: 그래서 생각한것이 valarray<tm> ㅡ.ㅡ;;;
:
: valarray<tm> tm_array[5];

선언이 틀렸습니다.

valarray<double> values(5); // [5]가 아닙니다!
와 같이 해야 합니다.

valarray는 ANSI C++ 라이브러리에 있는 클래스이지만,
STL 컨테이너는 아닙니다.
valarray는 'value array', 즉 정수나 실수만을 넣을 수 있는 컨테이너입니다.

또한 반복자(iterator)도 지원하지 않기 때문에 STL의 generic algorithm도 사용할 수 없죠.
valarray는 자체에서 지원하는 수학 계산용 멤버함수(sin, cos, tan 등)를 쓰는 것이 목적입니다.

님이 원하시는 대로 구조체를 원소로 가지려면,
vector 컨테이너를 사용하셔야 합니다.

vector<tm> tm_vector(5); // 여기서도 [5]가 아니라 (5)로 써야 합니다.

: tm_array[0] = start; // 컴파일에서 에러는 안납니다만.....
:
: tm_array[0]의 원소가 struct tm 의 원소가 나오질 않습니다......ㅡ.ㅡ;;;
:
: 어설프게 궁리한 탓인지.....제대로 안되는군요.....
:
: 혹시 방법이 있다면 알려주시길....
:
: 아님 그냥 1:1 로 카피하는 함수를 만들던지 해야겠군요.....ㅡ.ㅡ;;;

+ -

관련 글 리스트
1647 STL에서 이런 기능을 구현하는 방법은 없나요..... exkarion 1266 2002/11/27
1649     Re:STL에서 이런 기능을 구현하는 방법은 없나요..... 김백일 1457 2002/11/28
1652         감사합니다. exkarion 1345 2002/11/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.