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;
}
运行结果显示如下



















