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

来源:互联网 发布:骑马与砍杀设置优化 编辑:程序博客网 时间:2024/06/06 14:23

简介

容器内元素的约束:

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

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

  • 关联容器的键类型还需满足其他的约束(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;”这个//必须用空格隔开两个相邻的>符号,以示这是两个分开的符号,否则,系统会认为>>是单个符号,为右移操作符,结果会导致编译错误。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗被其他狗咬了怎么办 被土狗咬了出血怎么办 狗咬了有点破皮怎么办 遇到咬人的狗怎么办 自己的狗咬伤了怎么办 被蚂蚁咬了很痒怎么办 家里有蚂蚁怎么办能除根 被虫咬了红肿很痒怎么办 身体被虫子咬痒怎么办 手被乌龟咬破了怎么办 被乌龟咬出血了怎么办 被巴西乌龟咬了怎么办 孩子被乌龟咬了怎么办 如果被乌龟咬了怎么办 宝宝被乌龟咬了怎么办 上高中了偏文怎么办 上高中了很烦该怎么办 螳螂生完孩子后怎么办 小区门禁卡丢了怎么办 开门感应卡坏了怎么办 我的螃蟹生卵了怎么办 剑三账号被冻结怎么办 疤痕留下的红印怎么办 马桶刷子沾屎了怎么办 马桶上水管堵了怎么办 孕妇吃了姑娘果怎么办 出差被领导睡了怎么办 智融财富 跑路了怎么办 秒钱要是跑路了怎么办 新买的皮衣皱了怎么办 话说多了伤元气怎么办 话说多了嗓子哑怎么办 桂附地黄丸上火怎么办 乐视倒闭了会员怎么办 汽车上沾了水泥怎么办 汽车上的水泥点怎么办 小米4c启动不了怎么办 被骗取验证码后怎么办 电脑深度睡眠了唤醒不了怎么办 树脂镜片磨花了怎么办 详情页跳出率高怎么办