尽量不要使用与具体硬件或软件环境关系密切的变量。

 

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 
 5 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
 6 
 7 using namespace std;
 8 
 9 //返回一个Fibonacci数,其由generate_n()算法调用
10 int Fibonacci1(void)
11 {
12     static int r;
13     static int f1 = 0;
14     static int f2 = 1;
15     r = f1 + f2 ;
16     f1 = f2 ;
17     f2 = r ;
18     return f1 ;
19 }
20 //返回一个Fibonacci数,其由generate()算法调用
21 int Fibonacci2(void)
22 {
23     static int r;
24     static int f1 = 0;
25     static int f2 = 1;
26     r = f1 + f2 ;
27     f1 = f2 ;
28     f2 = r ;
29     return f1 ;
30 }
31 //定义整型数的vector容器类
32     typedef vector<int > IntVector ;
33 
34 //显示vector容器中的元素
35 void put_vector(IntVector v,char *name)
36 {
37     IntVector::iterator theIterator;
38     cout<<name<<":"<<endl;
39     for (theIterator=v.begin();theIterator!=v.end();++theIterator){
40         cout<<(*theIterator)<<" ";
41     }
42     cout<<endl;
43 }
44 
45 //测试generate()和generate_n()算法
46 int main(int argc, char** argv) {
47 
48     const int VECTOR_SIZE = 15 ;
49 
50     //定义迭代器类
51     typedef IntVector::iterator IntVectorIt ;
52 
53     //声明vector容器对象
54     IntVector Numbers1(VECTOR_SIZE),Numbers2(VECTOR_SIZE);
55     int i ;
56 
57     //初始化vector容器对象
58     for(i = 0; i < VECTOR_SIZE; i++)
59         Numbers1[i] = i ;
60     
61     //显示vector容器对象的元素
62     cout << "Before calling generate_n:" << endl ;
63     put_vector(Numbers1,"Numbers1");
64 
65     //利用generate_n算法用Fibonacci 数填充vector容器
66     generate_n(Numbers1.begin(), VECTOR_SIZE, Fibonacci1) ;
67 
68     //显示vector容器对象的元素
69     cout << "After calling generate_n:" << endl ;
70     put_vector(Numbers1,"Numbers1");
71 
72     //利用generate算法用Fibonacci 数填充vector容器
73     generate(Numbers2.begin(),Numbers2.end(), Fibonacci2) ;
74 
75     //显示vector容器对象的元素
76     cout << "After calling generate:" << endl ;
77     put_vector(Numbers2,"Numbers2");
78     return 0;
79 }