[C++03 ]

int a[100];

for (int i=0; i<100; ++i)

a[i] = i;

 

vector<int> v(50);

for (size_t i=0; i<v.size(); ++i)

v[i] = i + 1000;

 

 

[C++11 ]

iota() 알고리즘을 사용한다.

 

int a[100];

iota(begin(a), end(a), 0);

 

vector<int> v(50);

iota(v.begin(), v.end(), 1000);

 

저작자 표시
신고
by 흥배 2014.07.25 08:00

데이터셋을 시퀸스(연속적인)한 값으로 채우고 싶을 때는 iota 알고리즘을 사용합니다.

앞서 소개한 알고리즘들은 <algorithm> 헤더 파일에 정의 되어 있는 것에 반해 iota 알고리즘은<numeric> 헤더 파일에 정의 되어 있습니다.

 

itoa

template<class ForwardIterator, class T>

  void iota(ForwardIterator first, ForwardIterator last, T value);

 

 

아래는 예제 코드와 결과 입니다.

#include <iostream>

#include <vector>

#include <numeric>

using namespace std;

 

int main()

{

           vector<int> Numberlist;

           Numberlist.push_back( 2 );

           Numberlist.push_back( 5 );

           Numberlist.push_back( 7 );

           iota( Numberlist.begin(), Numberlist.end(), 2 );

 

           for( auto IterPos = Numberlist.begin(); IterPos != Numberlist.end(); ++IterPos )

           {

                     cout << *IterPos << endl;

           }

 

           return 0;

}

 

결과 >

 

위 예제를 보면 아시겠지만 iota의 세 번째 인자의 값이 시작 값이고, 이후에 값이 하나씩 증가합니다.

저작자 표시
신고
by 흥배 2012.09.06 09:00
| 1 |