VC++9 (VS2008) 에서는 iota 함수를 이용할 수 없나요?
글쓴이: cleitia / 작성시간: 목, 2014/11/13 - 1:03오후
중복 없는 난수 리스트 생성을 하려고 소스를 찾던중 다음과 같은 소스를 찾았습니다.
이 때 iota 함수가 읽어지지 않습니다. numeric 헤더파일을 오픈하여 내용을 보았는데 이런 구문이 있더군요..
===
#if _HAS_TRADITIONAL_STL
template
class _Ty> inline
void iota(_FwdIt _First, _FwdIt _Last, _Ty _Val)
{ // compute increasing sequence into [_First, _Last)
_DEBUG_RANGE(_First, _Last);
for (; _First != _Last; ++_First, ++_Val)
*_First = _Val;
}
#endif /* _HAS_TRADITIONAL_STL */
===
현재 제 개발 환경에서 iota를 이용하기 위해선 어떻게 해야 하나요?
#include <numeric> #include <algorithm> #include <list> #include <vector> #include <iostream> int main() { std::list<int> l(10); std::iota(l.begin(), l.end(), -4); std::vector<std::list<int>::iterator> v(l.size()); std::iota(v.begin(), v.end(), l.begin()); std::random_shuffle(v.begin(), v.end()); std::cout << "Contents of the list: "; for(auto n: l) { std::cout << n << ' '; } std::cout << '\n'; std::cout << "Contents of the list, shuffled: "; for(auto i: v) { std::cout << *i << ' '; } std::cout << '\n'; }
Forums:
iota가 C++11부터 표준에 추가된 함수라 그런
iota가 C++11부터 표준에 추가된 함수라 그런 것이 아닌가 싶습니다.
컴파일러의 버전을 올리면 해결될 것 같지만 그러기 힘드신 상황이라면, iota의 구현이 그리 복잡하지 않으니 다음과 같이 직접 추가해서 사용하시는 것이 어떤가요?
댓글 달기