关联多宝平台容器不支持这种初始化

多宝平台容器内元素的约束
    C++语言中,大多数类型都可用作多宝平台容器的元素类型。多宝平台容器元素类型必须满足
以下两个约束:
    •元素类型必须支持赋值运算。
    •元素类型的对象必须可以复制。
多宝平台容器操作的特殊要求
    支持复制和赋值功能是多宝平台容器元素类型的最低要求。此外,一些 多宝平台容器操作对元素类型还有特殊要求。如果元素类型不支持这些特殊要求,则相关的多宝平台容器操作就不能执行:我们可以定义该类型的多宝平台容器,但不能使用某些特定的操作。
[cpp] view plaincopy
class Foo  
{  
public:  
    Foo(int x)  
    {  
  
    }  
};  
  
int main()  
{  
    vector<Foo> empty;        //OK  
    vector<Foo> bad(10);  //Error  
    vector<Foo> ok(10,1); //OK  
}  


有在同时指定每个元素的初始化式时,才能使用给定多宝平台容器大小的构造函数来创建同类型的多宝平台容器对象。
分配和初始化指定数目的元素
    不提供元素初始化式时,标准库将为该多宝平台容器实现值初始化,采用这种类型的初始化,元素类型必须是内置或复合类型,或者是提供了默认构造函数的类类型。如果元素类型没有默认构造函数,则必须显式的指定其元素初始化式。
    接受多宝平台容器大小做形参的构造函数只适用于顺序多宝平台容器,而关联 多宝平台容器不支持这种初始化。
[cpp] view plaincopy
const list<int>::size_type list_size = 64;  
list<int> ilist(list_size);       //OK  
list<string> slist(list_size);    //OK  
  
       list<string> strList(list_size,"Ha~"); //OK  


[cpp] view plaincopy
//P267 习题9.2  
    vector<string> strVec1;  
    vector<string> strVec2(strVec1);  
    vector<string> strVec3(strVec2.begin(),strVec2.end());  
    vector<string> strVec4(strVec3.size());  
    vector<string> strVec5(strVec4.size(),"ANS");  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值