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

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

C++ Primer读书笔记整理(二)的相关文章

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

1.读取数量不定的输入数据时可以把cin语句放到条件判断语句中,如果流的状态有效则读取成功,否则读取失败. 例如: while(cin>>value) /* do something */ 2.顶层const与底层const的区别 1)顶层const表示任意的对象是const(即常量) 例如: const int value = 0; // i是顶层const常量 int i= 0; int *const ptr = &i; //ptr是顶层const常量 2)底层const一般用在引

C++中的volatile(Primer读书笔记)

时间:2014.05.24 地点:基地 -------------------------------------------------------------------------- 一.简述 volatile限定符平时很少用到,今天倒是碰到了,所幸探个明白.volatile 英文字面意思是"不稳定的",确切的计算机含义时与机器相关,所以在对包含volatile的程序在移植到新机器或使用不同的编译器时往往还需要对编译器进行一些改变. -----------------------

MySQL技术内幕-InnoDB存储引擎-读书笔记(二)

MySQL技术内幕-InnoDB存储引擎-读书笔记(二) 作为php开发,使用mysql总是少不了的 系列文章博客链接 http://itsong.net/articles/466.html 第三章 文件 mysql与innodb几个类型的文件 参数文件,配置路径.初始化参数.内存大小等 日志文件,包括错误日志,二进制日志,慢查询日志,查询日志 socket文件,用unix域套接字,unix domain socket来进行连接时需要的文件,这一般是本机连接,比通常tcp快 pid文件,进程id

我编程,我快乐——读书笔记(二)

我编程,我快乐--读书笔记(二) 第二章 在产品上投资 1. 我之所以说自己有天赋,是因为我发现自己在工作中不断学习,并且不断进步. 2. 只有向这件产品中投入心血.汗水.眼泪和资金,才能使它真正具有价值. 3. 要主动问,不要等着别人来告诉你.授人以鱼不如授人以渔. 4. 如果你想要雇佣某人来为你工作,你会希望这个人总是要受那些专家的支配吗?我不愿意.我想要的是一个能够自立的员工. 5. 与客户的互动式非常重要的,清楚地了解客户的要求比似懂非懂然后自己填写细节要好得多. 6. 学习行业是如何运

C++primer学习笔记(二)——Chapter 4

4.1  Fundamentals 1.Basic Concepts (1)操作符分为一元,二元或者三元操作符: (2)复杂的表达式中含有很多操作符时: 规则一:分为不同的级别,级别高的先运行: 规则二:相同级别的操作符有执行顺序的确定: (3)操作符可以改变操作数的类型 一般将级别低的转化成级别高的 (4)重载运算符 相同的运算符在对不同类型的对象进行操作的时候,会有不同的功能: (5)Lvalue和Rvalue 显而易见:Lvalue指的是Left value,Rvalue指的是Right

[.NET] 《Effective C#》读书笔记(二)- .NET 资源托管

<Effective C#>读书笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内存,我们并不需要去担心内存泄漏,资源分配和指针初始化等问题.不过,它也并非万能,因为非托管资源需要我们自己进行清理,如文件句柄.数据库连接.GDI+ 对象和COM 对象等. 目录 十二.推荐使用成员初始化器而不是赋值语句 十三.正确地初始化静态成员变量 十四.尽量减少重复的初始化逻辑 十五.使用 using

《图解tcp/ip》读书笔记(二)

<图解tcp/ip>读书笔记(二) 本周主要阅读的是本书的第三章--数据链路. 当然了,从某些角度讲,我认为这一章就是计算机网络的最基本的内容之一.整章讲述了数据链路层的作用和相关技术,主要描述了以太网.无线通信.ppp.公共网络以及其他的一些数据链路一些细节性的技术. 由于之前已经学习过相关计算机网络的课程,因此,就不再详细的记录整个阅读内容了,很多让我突破以前思维定式的一些知识,我挑一些列在下面. 其实这些知识花几分钟.几个小时,就可以得到,或者查阅互联网会得到比这本书更新的技术,但是,有

《C#图解教程》读书笔记之二:存储、类型和变量

一.类型初窥:掀起你的盖头来 (1)C程序是一组函数和数据类型,C++程序是一组函数和类,而C#程序是一组类型声明: (2)类型是一种模板:模板本身不是数据结构,但它详细说明了由该模板构造的对象的特征: (3)C#提供了16种预定义类型:13种简单类型(数值类型:int,float,double,decimal等:非数值类型:bool,char),3种非简单类型(object,string,dynamic): 所有的预定义类型都直接映射到底层的.NET类型.C#的类型名称其实就是.NET类型的别

C++primer读书笔记11-多态

多态也是C++中的一个重要的方面,多态和动态类型,虚函数本质上是指相同的事情. 1 虚函数 类中的成员函数原型前面加上virtual 表面这个函数是个虚函数.虚函数的目的是为了在继承它的派生类中重新定义这个函数,以便于通过基类的指针或引用在运行时对派生类的函数进行调用. 2 派生类和虚函数 派生类一般情况下要重定义所继承的虚函数,有几个注意事项. <1>虚函数的声明必须和基类中的函数声明原型完全一致,例外的是当基类返回基类型的指针或者引用的时候,派生类可以派生类类型的指针或者引用 <2&