output 배열 크기가 정해져 있지 않다는 것은, fun 함수를 호출하는 입장에서는 fun 함수가 몇 개의 객체를 돌려줄지 알 수 없다는 뜻인가요?
그렇다면 std::vector가 답입니다. array는 그게 C-style 고전적 배열이든 std::array이든 컴파일 타임에 원소 갯수가 정해져 있어야 합니다.
사실은 꼭 std::vector일 필요도 없는데, random access가 꼭 필요하지 않고 fun 함수 자체도 몇 개의 개체를 반환할지 다 헤아려보기 전까지는 알 수 없는 경우엔 std::list도 괜찮은 선택이지요.
그 밖에, fun 함수 자체의 인터페이스를 어떻게 설계할지도 수많은 방법들이 있습니다.
1. 파라미터로 vector *를 받은 뒤 채워서 반환하거나
2. 파라미터로 vector &를 받은 뒤 채워서 반환하거나
3. 파라미터로 back_inserter를 받은 뒤 채워서 반환하거나 (가장 generic한 듯.)
4. vector 객체를 내부에서 만든 뒤 값으로 반환하거나 (move semantic 정말 좋습니다.)
기타 등등. 심지어 하나 이상의 인터페이스를 만드는 방법도 있지요. (overloading)
구글에서 vector vs array 찾아봤습니다.
구글에서 vector vs array 찾아봤습니다.
https://stackoverflow.com/questions/15079057/arrays-vs-vectors-introductory-similarities-and-differences
도움 되시길.
세벌 https://sebuls.blogspot.kr/
output 배열 크기가 정해져 있지 않다는 것은,
output 배열 크기가 정해져 있지 않다는 것은, fun 함수를 호출하는 입장에서는 fun 함수가 몇 개의 객체를 돌려줄지 알 수 없다는 뜻인가요?
그렇다면 std::vector가 답입니다. array는 그게 C-style 고전적 배열이든 std::array이든 컴파일 타임에 원소 갯수가 정해져 있어야 합니다.
사실은 꼭 std::vector일 필요도 없는데, random access가 꼭 필요하지 않고 fun 함수 자체도 몇 개의 개체를 반환할지 다 헤아려보기 전까지는 알 수 없는 경우엔 std::list도 괜찮은 선택이지요.
그 밖에, fun 함수 자체의 인터페이스를 어떻게 설계할지도 수많은 방법들이 있습니다.
1. 파라미터로 vector *를 받은 뒤 채워서 반환하거나
2. 파라미터로 vector &를 받은 뒤 채워서 반환하거나
3. 파라미터로 back_inserter를 받은 뒤 채워서 반환하거나 (가장 generic한 듯.)
4. vector 객체를 내부에서 만든 뒤 값으로 반환하거나 (move semantic 정말 좋습니다.)
기타 등등. 심지어 하나 이상의 인터페이스를 만드는 방법도 있지요. (overloading)
댓글 달기