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;
}