C++ 0508 向量和数组(一)

向量和数组

class vector
{
    int sz; //大小
    double* elem; //指向元素的指针
public:
    vector(int s)  //构造函数
        :sz{s},elem{new double[s]} {/*...*/} //分配内存
    ~vector()   //析构函数
        {delet[] elem;}  //释放内存
}


class vector
{
    int sz;  // 大小
    double* elem; //指向元素的指针
public:
    vector(int s)  //构造函数(s为元素数量)
        :sz{s},elem{new double[sz]} //为元素分配未初始化的内存
    {
        for(int i=0; i<sz; ++i) elem[i]=0.0;//初始化
    }

    vector(initializer_list<double>lst)  // 初始化器列表构造函数
         :sz{lst.size()}, elem{new double[sz]} //为元素分配未初始化的内存
    {
        copy(lst.begin(), lst.end(), elem); // 初始化
    }

};

vector v1={1,2,3}; //三个元素1.0,2.0,3.0
vector v2(3); //三个元素,都具有(默认值)0.0

vector v1 {3}; //一个元素,值为3.0
vector v2(3); //三个元素,都具有(默认值)0.0


如果有多个构造函数可供选择,编译器会将{}列表中的一个值解释为一个元素值,并将它作为一个initializer_list
的元素传递给初始化器列表构造函数。

vector v11={1,2,3}; //三个元素1.0,2.0,3.0
vector v12={1,2,3}; //三个元素1.0,2.0,3.0
两个定义只是风格上的不同

注意,我们是按传值方式传递initalizer_list<double>的。我们故意这样做的,这也是语言规则所要求的
:一个initializer_list只是指向分配在“别处的”元素的句柄。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值