尽量不要使用与具体硬件或软件环境关系密切的变量。
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 }