/
...
/
/
二. 复合数据类型
Search
Try Notion
二. 复合数据类型
数组
采用列表初始化{}:不允许限缩
不检查下标
常见初始化写法
数组名称等价于数组第一个元素的地址,而非数组的地址(可能仅解释为指针运算有效?)
short things[] = {1, 2, 3, 4} ; int num_elements = sizeof(things) / sizeof(short) ; //注意如果遗漏值,编译器可能不会为你检查出来,有风险,最好手动指明数组数目 //手动指定数组长度也可将多余长度留作他用
Copy
C++
sizeof为数组长度,strlen()为字符串长度,素组长度至少需要strlen()+1
C Style 字符串
需要'\0' 作为结尾
字符串字面量可通过 空格进行拼接
C++ 原生字符串(ANSI/ISO C++ 98)
位于<string> 库中, std命名空间中
视作简单类型(字符串变量赋值传递时按值传递)
定义时创建长度为0的对象,长度可动态改变
与C Style类似之处
可用字符串字面量初始化
可用cin/cout 但目前所学仅限最简单的形式(利用<< >>)(成员函数暂时不知可用否)
结构体
共用体(union)
枚举
匿名枚举:相当于创建符号常量,从0开始
显示设定枚举值:enum bits{one=1, two=2}
枚举量参与算术表达式时转换为int,但不能直接将int赋值给枚举值,可用强制类型转换
域内枚举(C++扩展)
在switch while if(流程控制语句中)中提升为int
vector模板
类似string类,一种动态数组,底层使用new和delete,但是是自动完成的
include <vector>
初始长度为0,可通过 vector<typeName> VarName(Size) 定义初始长度
支持 列表初始化 同类拷贝初始化(区别于同类引用初始化)
支持 函数化初始化
vector<int> a(7) ; //初始化7个元素,值为0; vector<int> a(7,3) ; //初始化7个元素,值为3;
Copy
C++
array模板
介于vector和数组之间,静态分配,开销小,但是可以 同类拷贝初始化(赋值按值传递)
和vector模板一样支持.at() .begin() .end() 成员函数
.at() 和 数组索引[]的区别在于 .at() 检查出界,开销更小