问题1
检查下面的程序是否有错误并修正.
1 2 3 4 5 6 | vector<int> vec; list<int> lst; int i; while(cin >> i) lst.push_back(i); copy(lst.cbegin(),lst.cend(),vec.begin()); |
问题2
检查下面的程序是否有错误并修正.
1 2 3 | vector<int> vec; vec.reserve(10);//让vector预分配10个内存空间 fill_n(vec.begin(),10,0); |
源代码1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | /************************************************************************* > File Name: test.10.7.1.cpp > Author: puruidong > Mail: 1@w1520.com > Created Time: 2014年06月08日 ************************************************************************/ #include<iostream> #include<vector> #include<list> #include<algorithm> using namespace std; int main() { //vector<int> vec;//此容器必须初始化, //并且与拷贝容器的元素数量一样多 list<int> lst; int i; cout << "input number?" << endl; while(cin >> i) { lst.push_back(i); } vector<int> vec(lst.size(),0);//此处用拷贝容器元素数量 //初始化同样数量的元素[0] /* 大部分接受三个参数的算法,都假定第三个参数 所属的容器与前两个参数所属的容器一样长!! */ copy(lst.begin(),lst.end(),vec.begin());//执行拷贝. cout << "vector:size:" << vec.size() << " list:size: " << lst.size() << endl; return 0; } |
源代码2
切忌不可以对空容器进行修改操作!!!并且算法不会检查写入操作是否合法!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /************************************************************************* > File Name: test.10.7.2.cpp > Author: puruidong > Mail: 1@w1520.com > Created Time: 2014年06月08日 ************************************************************************/ #include<iostream> #include<vector> #include<iterator> #include<algorithm> using namespace std; int main() { //vector<int> vec;若未初始化容器,将无法实现修改元素1# vector<int> vec(10,10); vec.reserve(10);//若1#没有初始化容器,此处也没有预先分配内存空间,程序运行结果将是未定义的. fill_n(vec.begin(),10,0);//修改容器中的元素. //输出容器中的元素. for(vector<int>::const_iterator it=vec.begin();it!=vec.end();++it) { cout << *it << endl; } return 0; } |