码迷,mamicode.com
首页 > 编程语言 > 详细

C++ Primer读书笔记整理(二)

时间:2015-09-20 00:13:30      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

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)调用一个返回引用的函数返回左值,其他返回类型得到右值。

 

未完待续......

C++ Primer读书笔记整理(二)

标签:

原文地址:http://www.cnblogs.com/yibo141/p/4822489.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!