C++ 9.1.2 容器内元素的类型约束-------非引用、非IO标准库类型

本文详细阐述了C++容器内元素类型的约束条件,包括赋值运算、复制功能,以及对于引用类型和IO标准库类型的特殊规定。同时介绍了容器作为元素类型的应用,并讨论了容器操作对元素类型的一些特殊要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

容器内元素的约束:

  • 元素类型必须支持赋值运算;

  • 元素类型的对象必须可以复制。

  • 关联容器的键类型还需满足其他的约束(10章)

    • 除了引用类型外,所有内置或复合类型都可用作元素类型。引用不支持一般意义的赋值运算,引用必须初始化,初始化之后值不能再变了。因此没有元素是引用类型的容器。

    • IO库类型不支持复制和赋值,因此不能创建存放IO类型对象的容器,除输入输出(IO)标准库类型之外,所有其他标准库类型都是有效的容器元素类型。

    • 因为容器受容器元素类型的约束,所以可以定义元素是容器类型的容器。但是 > 符号直接要有空格,不然会被当做>>运算符的

===============================================================================================================

一、容器内元素的类型约束—-非引用、非IO标准库类型

C++语言中,大多数类型都可用作容器的元素类型。容器元素类型必须满足以下两个约束:

  • 元素类型必须支持赋值运算;

  • 元素类型的对象必须可以复制。

  • 关联容器的键类型还需满足其他的约束(10章)

    • 除了引用类型外,所有内置或复合类型都可用作元素类型。引用不支持一般意义的赋值运算,引用必须初始化,初始化之后值不能再变了。因此没有元素是引用类型的容器。

    • IO库类型不支持复制和赋值,因此不能创建存放IO类型对象的容器,除输入输出(IO)标准库类型之外,所有其他标准库类型都是有效的容器元素类型。

  • 容器本身也满足上述要求,因此可以定义元素本身就是容器类型的容器。

1、容器操作的特殊要求

  • 支持复制和赋值 功能是容器元素类型的最低要求,此外,一些容器操作对元素类型还有特殊要求。

  • 其中一些需外加类型要求的容器操作是指定容器大小并提供单个初始化式的构造函数。如果容器存储类类型的对象,那么只有当其元素类型提供默认构造函数时,容器才能使用这种构造函数。

不是很懂!!!

//假设Foo 没有默认构造函数,但提供了需要一个int型形参的构造函数
vector<Foo> empty;//没有需要为元素默认构造
vector<Foo> bad(10);//错误!!!Foo没有默认的构造函数
vector<Foo> ok(10,1);//可以,每个元素初始化为1

2、容器的容器

因为容器受容器元素类型的约束,所以可以定义元素是容器类型的容器。

vector< vector<string> > lines;//注意是这个,而不是“vector<vector<string>> lines;”这个
//必须用空格隔开两个相邻的>符号,以示这是两个分开的符号,否则,系统会认为>>是单个符号,为右移操作符,结果会导致编译错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值