- 7.1 array对象
- 7.1.1 声明
- array<type, size> name;
- 用常量变量声明array对象
- const size_t arraySize = xx; array<type, arraySize> name;
- 常量变量(命名常量或者只读变量)必须用常量表达式初始化
- 7.1.2 array初始化
- 使用for循环初始化
- for(size_t i = 0; i < array1.size(); i++){array1[i] = 0;}
- 在声明时初始化
- array<type, size> name = {value, value};
- 当初始化元素个数小于数组所含个数时,其余元素会自动初始化值0,此方法只能用在array对象的生命中
- 使用for循环初始化
- 7.1.3 静态局部array对象和自动局部array对象
- 静态局部array对象
- static array<type, arraySize> name;
- 会自动把每个元素都初始化为0,每次调用函数都会保存上一次执行的值
- 自动局部array对象
- 不会执行默认初始化,且具有自动存储期,每次需要重新创建
- 静态局部array对象
- 7.1.4 基于范围的for语句
- for(type item : items){};//当不需要array下标时,可以使用基于范围的for语句简化计数器循环
- 二维数组,嵌套基于范围的for语句
- for(auto student : grades){for(auto test : student){}};
- 使用auto自动匹配对象的数据类型
- 7.1.5 排序和查找
- 排序sort
- sort(array.begin(), array.end());
- 查找binary_search
- binary_search(array.begin(), array.end(), value);
- 注意:二分查找必须是基于排好序的array数组
- 排序sort
- 7.1.6 多维array对象
- array<array<type, columns>, rows>;
- 7.1.1 声明
- 7.2 vector对象
- 7.2.1 声明
- vector<type> name(size);//vector的大小在对象名称后圆括号内声明
- vector创建时会默认执行初始化,将所有元素初始化为0
- 通过vector来声明另一个对象初始化
- vector<type> name(Integer1);
- 7.2.2 操作
- 可以用!=和==运算符进行比较
- (Integer1 != Integer2) or (Integer1 == Integer2)
- 可以使用赋值运算符
- Integer1 = Integer2;//将数组2的值赋给Integer2,此时Integer1 == Integer2
- push_back()改变vector的大小
- vector.push_back(100);//会在vector最后一个元素后面添加一个值为100的元素
- 可以用!=和==运算符进行比较
- 7.2.1 声明
- 7.3 异常处理
- try{}catch( out_of_range &ex ){ cout << ex.what() << endl;}
- vector成员函数at提供了边界检查功能
- try{cout<<integer1.at(15)<<endl;}catch(out_of_range &ex){cout<<ex.what()<<endl;}若超出范围,则或获取超出范围错误
- 异常形参what成员函数
- ex.what()
- 获取存储在此异常对象中的错误消息,便于修改