学习C++
文章平均质量分 79
今朝一九九三
这个作者很懒,什么都没留下…
展开
-
C++:关联容器(pair、map、set、multiset)
关联容器和顺序容器的本质区别:关联容器是通过键存取和读取元素、顺序容器通过元素在容器中的位置顺序存储和访问元素。 两个基本的关联容器类型是map和set。 map的元素以键-值对的形式组织:键用作元素在map的索引,而值则表示所存储和读取的数据。set仅包含一个键,并有效地支持关于某个键是否存在的查询。 set和map类型的对象不允许为同一个键添加第二个元素。如果一个键必须对应多个实例,则需使原创 2016-02-29 10:22:29 · 1129 阅读 · 0 评论 -
C++:标准库类型(string、vector、list、bitset)
两种最重要的标准库类型是 string 和 vector。1、标准库 string 类型与其他的标准库类型一样,用户程序要使用 string 类型对象,必须包含相关头文件。如果提供了合适的 using 声明,那么编写出来的程序将会变得简短些:#include using std::string;string类有以下几种初始化方式: string s1; //原创 2016-01-22 10:37:39 · 1317 阅读 · 2 评论 -
C++:数组和指针
C++ 语言提供了两种类似于 vector 和迭代器类型的低级复合类型——数 组和指针。现代 C++ 程序应尽量使用 vector 和迭代器类型,而避免使用低级的数组和指针。原创 2015-10-09 21:40:57 · 530 阅读 · 0 评论 -
C++:数据类型
数据类型的存储数据类型在机器级是以位存储数据的。然而在位这一级上,存储器是没有结构和意义的。 让存储具有结构的最基本方法是用块(chunk)处理存储。大部分计算机 都使用特定位数的块来处理存储,块的位数一般是 2 的幂,因为这样可以一次处理 8、16 或 32 位。 虽然确切的大小因机器不同而不同,但是通常将 8 位的块作为一个字节,32 位或 4 个字节作为一个“字(word)”。大多数计算原创 2015-09-21 19:54:41 · 527 阅读 · 0 评论 -
C++:类和对象
使用类时我们需要回答三个问题:类的名字是什么?它在哪里定义?它支持什么操作? 类一般定义在相应的头文件里。不要忘了 在main函数所在文件中包含该头文件。#include "xx.h"。 用类定义了的对象,可以像普通变量那样进行 赋值、输入输出、加法 等操作。原创 2015-09-18 15:31:43 · 680 阅读 · 2 评论 -
C++:标准IO(输入输出)
发斯蒂芬转载 2016-04-04 13:42:56 · 684 阅读 · 0 评论 -
C++:一些使用上的注意
首先,使用 Visual Studio 来编写C++程序,必须先#include "stdafx.h"。一般来说,还都要#include <iostream>,这样程序中才能使用标准输入输出。还要引用名称空间std,也就是在main函数之前加一句using namespace std。这样下面就可以直接使用 cin,cout,endl ,而不用写 std::cin 这样的格式。原创 2015-09-16 19:25:10 · 339 阅读 · 0 评论 -
C++:顺序容器及顺序容器适配器(stack、queue、priority_queue)
顺序容器:包括vector、list、deque。为了定义一个容器类型的对象,必须先包含相关头文件,即#include <vector>#include <list>#include <deque>容器是类模板,要定义某种特殊的容器,必须在容器名后加一对尖括号,尖括号里面提供容器中存放的元素的类型:vector<string> svec;list<int> ilist;deque<Sales原创 2015-12-19 22:24:49 · 776 阅读 · 0 评论 -
C++:变量
变量的命名习惯变量命名有许多被普遍接受的习惯,遵循这些习惯可以提高程序的可读性。变量名一般用小写字母。例如,通常会写成 index,而不写成 Index 或 INDEX。标识符应使用能帮助记忆的名字,也就是说,能够提示其在程序中的用法的名字,如 on_loan 或 salary。包含多个词的标识符书写为在每个词之间添加一个下划线, 或者每个内嵌的词的第一个字母都大写。例如通常会写成原创 2015-09-24 21:56:11 · 484 阅读 · 0 评论 -
C++:文件流读写
对文件进行操作,需要包含头文件。#include <fstream> ofstream //文件写操作 内存写入存储设备 ifstream //文件读操作,存储设备读区到内存中 fstream //读写操作,对打开的文件可进行读写操作1. 打开文件在fstream类中,成员函数open()实现打开文件的操作,从而将数据流和文件进行关联,转载 2016-06-01 16:43:34 · 827 阅读 · 0 评论 -
C++:函数
形参引用形参如果希望改变调用的函数的实参,可以采用引用形参。void swap(int &v1, int &v2){int tmp = v2;v2 = v1;v1 = tmp;}每次调用函数,引用形参被创建并与相应实参关联。操作形参相当于对实参进行操作。从 C 语言背景转到 C++ 的程序员习惯通过传递指针来实现对实参的访问。在 C++ 中,使用引用形参则更安全和原创 2015-12-19 22:12:49 · 412 阅读 · 0 评论 -
C++:面向对象编程(封装、继承、多态等)
面向对象编程的关键思想是 多态性 。在调用虚函数时,引用和指针的静态类型与动态类型可以不同,这是支持多态性的基石。1. 继承和动态绑定 继承:派生类能够继承基类定义的成员,派生类可以无需改变而使用那些与派生类型具体特性不相关的操作,派生类可以重定义那些与派生类型相关的成员函数(虚函数)。 动态绑定:在C++中,通过基类的引用调用虚函数时,发生动态绑定。动态绑定的关键在于引用既可以指向基类对象,原创 2016-01-12 18:54:38 · 814 阅读 · 0 评论 -
C++:操作符
bitset 对象或整型值的位操作假设我们要存储一个30位的数据,用bitset可以简单表示为 bitset bitset_quiz1; 用整型值则只能这样表示: unsigned long int_quiz1 = 0; 注意到这种数据类型在所有机器上都至少拥有 32 位的长度。下面,假设要设置第27位为1,分别可以这么做:bitset_quiz1.set(27); in原创 2015-10-14 21:36:29 · 852 阅读 · 0 评论 -
C++:预处理
为了避免名字冲突,预处理器变量经常用全大写字母表示。 预处理器变量有两种状态:已定义或未定义。定义预处理器变量和检测其状态所用的预处理器指示不同。#define 指示接受一个名字并定义该名字为预处理器变量。#ifndef 指示检测指定的预处理器变量是否未定义。如果预处理器变量未定义,那么跟在其后的所有指示都被处理,直到出现 #endif。 可以使用这些设施来预防多次包含同一头文件,如:#ifnd原创 2015-10-05 15:37:23 · 509 阅读 · 0 评论 -
C++:异常处理
异常机制提供程序中错误检测与错误处理部分之间的通信。C++ 的异常处理中包括:throw 表达式, 错误检测部分使用这种表达式来说明遇到了不可处理的错误。可以说,throw 引发了异常条件。try 块,错误处理部分使用它来处理异常。try 语句块以 try 关键字开始,并以一个或多个 catch 子句结束。在 try 块中执行的代码所抛出(throw)的异常, 通常会被其中一个 catch原创 2015-10-17 17:00:13 · 403 阅读 · 0 评论 -
C++:模板与泛型编程
1. 函数模板函数模板是一个独立于类型的函数,可作为一种方式,产生函数的特定类型版本。 例如,一个比较两个值并返回比较结果的函数的模板版本为:template <typename T>int compare(const T &v1,const T &v2){ if (v1 < v2) return -1; if (v2 < v1) return 1; return 0;原创 2016-01-17 15:24:49 · 375 阅读 · 0 评论 -
C++:标准库函数(sort、rand等)
标准库里有许多诸如排序的函数,使用前要包含头文件 #include <algorithm>1. STL中的sort函数这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是[a,b)。简单来说,有一个数组int a[100],要对从a[0]到a[99]的元素进行排序,只要写sort(a,a+100)就行了,默认的排序方式是升序。原创 2016-05-06 16:34:58 · 2116 阅读 · 0 评论