多宝平台容器内元素的约束
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");
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");