C++ Primer(第5版) 练习 10.7
练习 10.7 下面的程序是否有错误?如果有,请改正。
(a) vector<int>vec; list<int> lst; int i;while(cin>>i)lst.push_back(i);copy(lst.cbegin(), lst.cend(), vec.begin());(b) vector<int> vec;vec.reserve(10);fill_n(vec.begin(), 10, 0);
环境:Linux Ubuntu(云服务器)
工具:vim
代码块
( a ) copy第三个参数应该使用back_inserter。
/*************************************************************************> File Name: ex10.7.cpp> Author: > Mail: > Created Time: Thu 29 Feb 2024 02:56:48 PM CST************************************************************************/#include<iostream>
#include<vector>
#include<list>
#include<algorithm>
using namespace std;int main(){vector<int> vec;list<int> lst;int i;cout<<"Enter numbers: ";while(cin>>i){lst.push_back(i);if(cin.get() == '\n'){break;}}cout<<"List numbers: ";for(const auto l : lst){cout<<l<<" ";}cout<<endl;copy(lst.cbegin(), lst.cend(), back_inserter(vec));cout<<"Vector numbers: ";for(const auto v : vec){cout<<v<<" ";}cout<<endl;return 0;
}
运行结果显示如下
( b ) 应该使用back_inserter插入vec。
/*************************************************************************> File Name: ex10.7.cpp> Author: > Mail: > Created Time: Thu 29 Feb 2024 02:56:48 PM CST************************************************************************/#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;int main(){vector<int> vec;vec.reserve(10);fill_n(back_inserter(vec), 10, 0);for(const auto v : vec){cout<<v<<" ";}cout<<endl;return 0;
}