随笔分类 - C++笔记
摘要:begin成员负责返回指向第一个元素的迭代器: end成员则负责返回指向容器“尾元素的下一位置”的迭代器,这样的迭代器仅是个标记,表示已经处理完了容器中的所有元素,end返回的迭代器成为尾后迭代器。 Note:容器为空,则begin和end返回的是同一个迭代器,都是尾后迭代器。 迭代运算符 执行解引
阅读全文
摘要:返回v中的元素个数 返回v中第n个位置上元素的引用 使用范围for语句处理vector对象中的所有元素: vector对象的类型总是包含着元素的类型: 两个vector相等当且仅当它们所含的元素个数相同,而且对应位置的元素值也相同。 关系运算符依照字典顺序进行比较: 如果两个vector对象的容量不
阅读全文
摘要:直接初始化适用的三种情况: 先创建空vector,利用vector的成员函数 push_back 向其中添加元素: 实时读入数据然后将其赋予vector对象: 向vector对象添加元素蕴含的编程假定 如果循环体内部包含有向vector对象添加元素的语句,则不能使用范围for循环。
阅读全文
摘要:定义vector对象的常用方法: 默认初始化vector对象,创建一个指定类型空vector: 允许把一个vector对象的元素拷贝给另外一个vector对象: 列表初始化vector对象 列表初始化,用花括号括起来的0个或多个初始值被赋予给vector对象: 提供的是初始元素值的列表,只能把初始值
阅读全文
摘要:定义和初始化string对象 初始化string对象方式: 拷贝初始化:使用等号(=)初始化一个变量,编译器把等号右侧的初始值拷贝到新建的对象中去。 直接初始化:不使用等号 当初始值只有一个时,使用直接初始化或拷贝初始化都行。如果初始化要用到的值有多个,一般只能使用直接初始化的方式: 用拷贝初始化的
阅读全文
摘要:using声明具有如下的形式: 一旦声明了上述语句,就可以直接访问命名空间中的名字: 每个名字都需要独立的using声明 按照规定,每个using声明引入命名空间中的一个成员: 一开始就有对cin、cout和endl的using声明,这意味着我们不再添加std::形式的前缀就能直接使用它们。 头文件
阅读全文
摘要:为了确保各个文件中类的定义一致,类通常被定义在头文件中,而且类所在头文件的名字应与类的名字一样。 头文件通常包含那些只能被定义一次的实体、如类、const和constexpr变量。 tip:头文件一旦改变,相关的源文件必须重新编译以便获取更新过的声明。 预处理概述 确保头文件多次包含仍能安全工作的常
阅读全文
摘要:写一段程序程序实现求两次交易相加结果的功能。程序的输入是下面这两条交易记录: 0-201-783456-X 3 20.00 0-201-783456-X 3 25.00 程序的结构如下: #include<iostream> #include<string> #include "Sales_data
阅读全文
摘要:Sales_data初步定义如下: 关键词struct紧跟着类名和类体。类体和花括号包围形成一个新的作用域。 类内部定义的名字必须唯一,但是可以与类外部定义的名字重复。 类体右侧的表示结束的花括号后必须写一个分号,这是因为类体后面可以紧跟变量名以示对该类型对象的定义,所以分号必不可少: 分号表示声明
阅读全文
摘要:C++11新标准引入第二种类型说明符decltype,它的作用是选择并返回操作数的数据类型。 编译器分析表达式并得到它的类型,却不实际计算表达式的值: 编译器并不实际调用函数f,而是使用当调用发生时f的返回值类型作为sum的类型。 decltype使用的表达式是一个变量,则decltype返回该变量
阅读全文
摘要:auto让编译器通过出初始值来推算变量的类型,显然,auto定义的变量必须有初始值: 使用auto也能在一条语句中声明多个变量,因为一条语句中只能有一种基本数据类型,所以该语句中所有变量的初始基本数据类型都必须一样: 复合类型、常量和auto 编译器推断出来的auto类型有时候和初始值的类型不完全一
阅读全文
摘要:类型别名是一个名字,它是某种类型的同义词。 有两种方法可用于定义类型别名,传统的方法是使用关键词typedef: 关键字typedef作为声明语句中的基本数据类型的一部分出现。含有typedef的声明语句定义的不再是变量而是类型的别名。 和以前的声明符一样,这里的声明符也包含类型修饰,从而也能由基本
阅读全文
摘要:常量表达式:值不会改变并且在编译过程就能得到计算结果的表达式。 字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。 一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定: 尽管staff_size的初始值是个字面值常量,但由于它的数据类型只是一个普通int而非co
阅读全文
摘要:顶层const:指针本身是一个常量 底层const:指针所指对象是一个常量 顶层const可以表示任意的对象是常量,这一点对任何数据类型都适用,如算术类型、类、指针等 底层const则与指针和引用等复合型的基本类型部分有关 指针类型既可以是顶层const也可以是底层const,这一点和其他类型相比区
阅读全文
摘要:指向常量的指针,不能用于改变其所指对象的值,要想存放常量对象的地址,只能使用指向常量的指针: 指针的类型必须与其所指对象的类型一致,但是有两个例外 允许令一个指向常量的指针指向一个非常量对象: 指向常量的指针没有规定其所指的对象必须是一个常量,所谓指向常量的指针仅仅要求不能通过该指针改变对象的值,而
阅读全文
摘要:const的引用 对常量的引用:把引用绑定到const对象上,就像绑定到其他对象上一样,不能被用作修改它所绑定的对象: 因为不允许直接为ci赋值,所以也就不能通过引用去改变ci。 初始化和对const的引用 在初始化常量引用时允许任意表达式作为初始值,只要该表达式的结果能转换成引用的类型,允许为一个
阅读全文
摘要:编写一个函数比较两个值,并指出第一个值是小于丶等会还是大于第二个值,我们可能想要定义多个函数,每个函数比较一种给定类型的值: 这两个函数几乎是相同的,唯一的差异就是参数的类型,函数体则完全一样。 函数模板 一个函数模板就是一个公式,可用来生成针对特定类型的函数版本,compare的函数模板如下: 模
阅读全文
摘要:希望定义一个变量,它的值不能被改变,用关键词const对变量的类型加以限定: bufSize定义成一个常量,任何试图为bufSize赋值的行为都将引发错误: 因为const对象一旦创建后其值就不能改变,所以const对象必须初始化 初始化和const 在不改变const对象的操作中还有一种初始化,如
阅读全文
摘要:一条定义语句可能定义出不同类型的变量: 定义多个变量 经常有一种观点误以为,在定义语句中,类型修饰符(*或&)作用于本次定义的全部变量。造成这种错误看法的原因有很多,其中之一可以把空格写在类型修饰符和变量名中间: 这种写法产生误导是因为int*放在一起好像是这条语句中所有的变量共同的类型一样。其实恰
阅读全文
摘要:指针是“指向”另外一种类型的符合类型。 指针和引用的不同点: 定义指针类型的方法:将声明符写成*d的形式,其中d是变量名。 一条语句中定义了几个指针变量,每个变量前面都必须有符号*: 获取对象的地址 指针存放某个对象的地址,要想获取该地址,需要使用取地址符&: 第二条语句把p定义为一个指向int的指
阅读全文

浙公网安备 33010602011771号