程序例1
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 using namespace std; 5 6 int main() 7 { 8 int num; 9 vector <int>nums; 10 while(cin>>num) 11 { 12 nums.push_back(num); 13 } 14 vector<int>::iterator it; 15 for(it=nums.begin();it!=nums.end();it++) 16 { 17 cout<<(*it)<<endl; 18 } 19 20 return 0; 21 }
程序例2
1 #include<iostream>
2 #include<string>
3 #include<vector>
4 using namespace std;
5
6 int main()
7 {
8 string q;
9 vector<string>save_q;
10 while(getline(cin,q))
11 {
12 save_q.push_back(q);
13 }
14 vector<string>::iterator it;
15 for(it=save_q.begin();it!=save_q.end();it++)
16 {
17 cout<<(*it)<<endl;
18 }
19 return 0;
20 }
程序例3
1 #include<iostream>
2 #include<string>
3 #include<vector>
4 using namespace std;
5
6 int main()
7 {
8
9 char * p;
10 vector<char *>save_p; //为什么用char * 就不能存进去值
11 p=new char[8];
12 while(cin.getline(p,8))
13 {
14 save_p.push_back(p);
15 p=new char[8];
16 }
17 vector<char *>::iterator it;
18 for(it=save_p.begin();it!=save_p.end();it++)
19 {
20 cout<<(*it)<<endl;
21 }
22
23
24
25 return 0;
26 }
程序例4
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 using namespace std; 5 6 int main() 7 { 8 9 char p[100]; 10 //vector<char *>save_p; //为什么用char * 就不能存进去值 11 vector<string>save_p; 12 while(cin.getline(p,8)) 13 { 14 save_p.push_back(p); 15 //cout<<p<<endl; 16 } 17 //vector<char *>::iterator it; 18 vector<string>::iterator it; 19 for(it=save_p.begin();it!=save_p.end();it++) 20 { 21 cout<<(*it)<<endl; 22 } 23 24 return 0; 25 }
上面是四组测试程序,全部通过,但是第4四组,刚开始不小心写成了注释掉的那几行,结果总是错误,后来发现原因是这样的,char p[100];
是在编译的时候就已经确定了p的地址,所以每次输入的时候都是在往同一个地址对应的地方存值,导致vector<char *>里面存的值也都是同一个地址里面的数,所以每次存新值的时候都把前面的覆盖掉了。