8.数组
标准库begin和end函数可作用于数组,分别用于获取指向数组首元素和尾元素下一位置的指针。
例如:
int ia[] = {0, 1, 2, 3, 4}; int *beg = begin(ia); //beg指向数组首元素 int *e = end(ia); //e指向数组尾元素下一位置
begin和end函数定义在头文件iterator中。
另外:可以使用数组来初始化vector的对象:
int arr[] = {0, 1, 2, 3, 4, 5}; vector<int> ivec(begin(arr), end(arr));
9.多维数组
使用范围for语句处理多维数组要注意,除了最内层的循环外,其他所有循环的控制变量都应该是引用类型
例如:
int arr[][] = { {1, 2, 3},{4, 5, 6}}; for(auto &a:arr) for(auto b:a) cout<<b<<endl;
如果a不是引用类型,所用编译器初始化a时会自动将这些数组形式的元素转换成指向该数组内首元素的指针,
这样得到的a的类型是int*型,显然不合法,之所以最内层可以不用引用是因为a是一维数组,因此推导出b
的类型为int,合法。
10.运算符优先级
前置++和*的优先级是相同的,都是从左到右结合;
后置++的优先级高于*和前置++,后置++从左到右结合。
这一点一定要特别记住。
11.含有可变形参的函数
为了能编写处理不同数量形参的函数,C++11新标准提供了两种主要方法:如果所有的实参类型
相同,可以传递名为initializer_list的标准库类型,如果实参类型不同,我们可以编写一种特殊的函数,也就是所谓的可变参数模板。
其中initializer_list对象中元素永远是常量值,我们无法改变其中元素的值。
12.函数的返回值
1)不要返回局部对象的引用或指针,因为一旦函数返回,局部对象的指针或引用就失效了。
2)调用一个返回引用的函数返回左值,其他返回类型得到右值。
未完待续......
时间: 2024-08-26 13:48:22