ㅇ 요소 생성
- 새로운 요소를 만들어 지정한 위치에 대입하는 함수
- 컨테이너에 삽입하는 것이 아니라 기존 요소를 파괴하고 대입한다
void fill(FwdIt first, FwdIt last, const T& val);
void fill_n(OutIt first, Size n, const T& val
- fiil : 반복자 구간을 지정한다. 구간은 이미 메모리가 확보되어 있어야 한다.
- fill_n : 시작 위치와 개수를 지정한다. 삽입 반복자 사용가능
1 #include <iostream>
2 #include <vector>
3 #include <algorithm>
4
5 using namespace std;
6
7 template<typename C>
8 void dump(const char *desc, C c)
9 {
10 cout.width(12);cout << left << desc << "==> ";
11 copy(c.begin(),c.end(),ostream_iterator<typename C::value_type>(cout," "));
12 cout << endl;
13 }
14
15 void main()
16 {
17 int ari[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
18 vector<int> vi(&ari[0],&ari[16]);
19
20 fill(vi.begin()+2,vi.end()-5,99);
21 dump("vi",vi);
22 }
ㅇ void random_shuffle(RanIt first, RanIt last[, UniOp& op]);
- 반복자 구간의 요소들을 무작위로 섞는다.
- 반복자 구간은 유효해야 한다.
- 난수로 요소를 생성해서 대입하는 것이 아니라 이미 존재하는 값들의 순서를 난수로 변경함
1 #include <Turboc.h>
2 #include <iostream>
3 #include <algorithm>
4
5 using namespace std;
6
7 void main()
8 {
9 char str[]="abcdefghijklmnopqrstuvwxyz";
10
11 randomize();
12 puts(str);
13 random_shuffle(&str[0],&str[strlen(str)]);puts(str);
14 random_shuffle(&str[0],&str[strlen(str)]);puts(str);
15 random_shuffle(&str[0],&str[strlen(str)]);puts(str);
16 }
ㅇ void generate(FwdIt first, FwdIt last, Gen g);, void generate_n(OutIt first, Dist n, Gen g);
- 반복자 구간에 대해 g함수를 호출하여 리턴되는 값으로 채운다.
- g는 인수를 받지 않고 컨테이너 요소 타입을 리턴하는 함수 객체이다.
- 다음 예제는 피보나치 수열을 만든다.
1 include <iostream>
2 #include <vector>
3 #include <algorithm>
4
5 using namespace std;
6
7 template<typename C>
8 void dump(const char *desc, C c)
9 {
10 cout.width(12);cout << left << desc << "==> ";
11 copy(c.begin(),c.end(),ostream_iterator<typename C::value_type>(cout," "));
12 cout << endl;
13 }
14
15 int fibo()
16 {
17
18 static int i1=1,i2=1;
19 int t;
20 t=i1+i2;
21 i1=i2;
22 i2=t;
23 return t;
24 }
25
26 void main()
27 {
28 vector<int> vi(10);
29
30 generate(vi.begin(),vi.end(),fibo);
31 dump("vi",vi);
32 }
ㅇ void generate(FwdIt first, FwdIt last, Gen g); , void generate_n(OutIt first, Dist n, Gen g);
- 반복자 구간에 대해 g함수를 호출하여 리턴되는 값으로 채운다.
- fil 함수와 마찬가지로 반복자 구간을 인수로 전달 받을 수도 있고 시작 위치와 개수를 인수로 받을 수도 있다.
- g는 인수를 받지 않고 컨테이너 요소 타입을 리턴하는 함수 객체이다.
- 다음 에제는 피보나치 수열을 만든다.
1 #include <iostream>
2 #include <vector>
3 #include <algorithm>
4
5 using namespace std;
6
7 template<typename C> void dump(const char *desc, C c)
8 {
9 cout.width(12);cout << left << desc << "==> ";
10 copy(c.begin(),c.end(),ostream_iterator<typename C::value_type>(cout," "));
11 cout << endl;
12 }
13
14 int fibo()
15 {
16 static int i1=1,i2=1;
17 int t;
18 t=i1+i2;
19 i1=i2;
20 i2=t;
21 return t;
22 }
23
24 void main()
25 {
26 vector<int> vi(10);
27
28 generate(vi.begin(),vi.end(),fibo);
29 dump("vi",vi);
30 }
'[ C/ C++ 프로그래밍 ] > [ STL ]' 카테고리의 다른 글
[ 혼연 정리 ] STL 알고리즘 - 6 [ 변경 알고리즘 ] (1) | 2010.06.24 |
---|---|
[ 혼연 정리 ] STL 알고리즘 - 5 [ 변경 알고리즘 ] (0) | 2010.06.24 |
[ 혼연 정리 ] STL 알고리즘 - 3 [ 변경 알고리즘 ] (1) | 2010.06.24 |
[ 혼연 정리 ] STL 알고리즘 - 2 [ 읽기 알고리즘 ] (0) | 2010.06.24 |
[ 혼연 정리 ] STL 알고리즘 - 1 [ 읽기 알고리즘 ] (2) | 2010.06.24 |