0913199

练习9.13:如何从一个list初始化一个vector?从一个vector又该如何创建?编写代码验证你的答案。

【出题思路】

更深入地理解容器拷贝初始化和范围初始化两种方式的差异。

【解答】

由于list与vector是不同的容器类型,因此无法采用容器拷贝初始化方式。但前者的元素类型是int,与后者的元素类型double是相容的,因此可以采用范围初始化方式来构造一个vector,令它的元素值与list完全相同。对vector也是这样的思路。

#include <iostream>
#include <vector>
#include <list>
using namespace std;
int main()
{
    list<int> ilist = {1,2,3,4,5,6,7};
    vector<int> ivec = {7,6,5,4,3,2,1};
    //容器类型不同,不能使用拷贝初始化
    // vector<double> ivec(ilist);
    //元素类型相容.因此可采用范围初始化
    vector<double> dvec(ilist.begin(), ilist.end());
    //容器类型不同,不能使用拷贝初始化
    // vector<double> dvecl(ivec);
    //元素类型相容,因此可采用范围初始化
    vector<double>dvec1(ivec.begin(),ivec.end());
    cout << dvec.capacity() << " " << dvec.size() << " "
    << dvec[0] << " " << dvec[dvec.size()-1] << endl;
    cout << dvec1.capacity() << " " << dvec1.size() << " "
    << dvec1[0] << " " << dvec1[dvec1.size()-1]  << endl;
    return 0;
}

本页共32段,1682个字符,2166 Byte(字节)