C++ 语言基础
文章平均质量分 94
北京大学 C++ 程序设计课程笔记,以及个人总结
FlameAlpha
荒诞之余也常伴理性,不是吗?
展开
-
C++ 之 伪随机数生成 <random>
C++ 标准库提供了生成随机和伪随机数的类。这些类包括:随机数生成类:生成均匀分布整数序列的伪随机数生成器,包括随机数引擎、随机数引擎适配器以及预定义随机数生成器。随机数分布类:将生成器生成的数字序列转换为遵循特定随机变量分布(如均匀分布、正态或泊松分布)的数字序列的对象。随机数引擎随机数引擎可以以种子数据为熵源生成伪随机数。类模板作用linear_congruential_engine实现线性同余算法mersenne_twister_engine实现梅森缠绕器算原创 2021-04-27 15:07:31 · 2085 阅读 · 0 评论 -
C++ 之 基础概念补充
C++实现面向对象的三个基本工具是:封装、继承、多态。封装:隐藏实现细节,仅对外提供接口,即实现了代码模块化;继承:扩展已存在的代码模块(类),即实现了代码重用。多态:具体表现为一个接口,多种方法,即实现了接口重用!继承一个对象直接使用另一个对象的属性和方法。优点:减少重复的代码。继承是多态的前提。继承增加了类的耦合性。缺点:继承在编译时刻就定义了,无法在运行时刻改变父类继承的实现;父类通常至少定义了子类的部分行为,父类的改变都可能影响子类的行为;如果继承下来的子类不适合原创 2020-08-04 10:46:46 · 182 阅读 · 0 评论 -
北大 C++ 程序语言设计课程笔记前言
感谢郭炜老师和刘家瑛老师的详细讲解,让我真正入门C++。 详细笔记见本专栏的其他文章。视频观看可点击:C++ 程序语言设计,如果有失效可以去中国大学MOOC(慕课) 搜索查找。...原创 2020-05-04 12:30:08 · 227 阅读 · 0 评论 -
C++ 之 基础知识补充
函数指针函数在内存中也是占用一段内存的所以我们也可以使用指针指向函数,之后只用指针调用函数,这一点在Python中有较好的体现,在个体类中直接调用适应度函数指针即可实现适应度的计算,因为Python中遵循一切皆指针的原则,所以直接以函数名传递即可实现。当然在cpp函数名也是函数指针类型的可以直接按函数指针进行传递,在北大视频中以数组排序函数为例进行讲解,其中比较函数则使用的函数指针进行传递。变...原创 2020-03-12 11:17:09 · 218 阅读 · 0 评论 -
C++ 之 常用运算符重载
运算符重载对已有的运算符赋予多重的含义使同一运算符作用于不同类型的数据时 ⇒\Rightarrow⇒ 不同类型的行为目的 : 扩展cpp中提供的运算符的适用范围,以用于类所表示的抽象数据类型在程序编译时:把含运算符的表达式 ⇒\Rightarrow⇒ 对 运算符函数的调用把运算符的操作数 ⇒\Rightarrow⇒ 运算符函数的 参数运算符被多次重载时,根据 实参的类型决定调...原创 2020-03-12 11:14:15 · 527 阅读 · 0 评论 -
C++ 之 面向对象基础知识
面向过程设计实际上就是模块化编程,简单来说就是程序 = 数据结构 + 函数,但是函数和变量是分开的也就是说property和behavior是分割的。结构化程序设计模块化编程面向对象设计抽象抽象封装封装一类事物共同属性数据结构行为/操作函数类类的定义class 类名{ 访问范围说明符: 成员变量1 成员变量2 ··· ...原创 2020-03-12 11:19:54 · 313 阅读 · 0 评论 -
C++ 之 多态(虚函数与虚继承)
虚基类一个类可以在一个类族中既被用作虚基类,也被用作非虚基类。在派生类的对象中,同名的虚基类只产生一个虚基类子对象,而某个非虚基类产生各自的子对象。虚基类子对象是由最派生类的构造函数通过调用虚基类的构造函数进行初始化的。最派生类是指在继承结构中建立对象时所指定的类。派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用;如果未列出,则表示使用该虚基类的缺省构造函数。从虚基类...原创 2020-02-11 10:47:32 · 944 阅读 · 0 评论 -
C++ 之 泛型程序设计与多态
泛型程序设计(Generic Programming)算法实现时不指定具体要操作的数据的类型泛型 ⇒\Rightarrow⇒ 算法实现一遍 ⇒\Rightarrow⇒ 适用于多种数据结构优势 : 减少重复代码的编写大量编写模板,使用模板的程序设计函数模板实现方式 :template <class 类型参数1, class 类型参数2... ...>返回值类型 模板...原创 2020-03-12 11:22:16 · 580 阅读 · 0 评论 -
C++ 之 文件及输入输出操作
文件操作顺序文件 : 一个有限字符构成的顺序字符流cpp标准库中:ifstream,ofstream和fstream共3个类用于文件操作一统称为文件流类。使用/创建文件的基本流程:打开文件读/写文件关闭文件打开文件通过指定文件名,建立文件和文件流对象的关联;指明文件的使用方式读写文件 :利用读/写指钍进行相应位置的操作关闭文件建立顺序文件程序实现 :#incl...原创 2020-03-12 11:24:53 · 479 阅读 · 0 评论 -
C++ 之 并发编程基础
C++并发编程基础在C++线程库中提供一个native_handle()成员函数,允许通过使用平台相关API直接操作底层实现。为了并发地运行函数,需要使用特定的函数以及对象来管理各个线程。C++在头文件中提供了管理线程的类和函数一个简单的Hello, Concurrent World程序:#include <iostream>#include <thread> ...原创 2020-02-11 10:41:55 · 854 阅读 · 0 评论 -
C++ 之 标准模板库(STL)的容器与迭代器
标题文章目录面向对象基础知识函数指针变参函数命令行参数位运算 可以提高运算效率引用const 用法动态分配内存 new函数重载面向过程设计面向对象设计类的定义复制构造函数类型转换构造函数静态成员变量与函数友元成员对象和封闭类运算符重载赋值运算符重载浅复制和深复制浅拷贝深拷贝流运算符重载自加自减运算符重载重载类型强制转换运算符运算符重载注意事项派生类构造函数以及析构函数调用顺序public继承的赋...原创 2020-02-11 10:10:23 · 1163 阅读 · 0 评论 -
C++ 之 标准模板库的七大算法
标准模板库的算法STL中的算法大致可以分为以下七类:不变序列算法变值算法删除算法变序算法排序算法有序区间算法数值算法特性 :算法就是一个个函数模板,大多数在中定义STL中提供能在各种容器中通用的算法,比如查找,排序等算法通过迭代器来操纵容器中的元素。许多算法可以对容器中的一个局部区间进行操作,因此需要两个参数,一个是起始元素的选代器,一个是终止元素的后面一个元素的迭...原创 2020-03-12 11:27:23 · 1131 阅读 · 1 评论 -
C++ 11 实用新特性总结
auto关键字template <class T1,class T2>auto add(T1x,T2 y)->decltype(x+y){return x+y;}Lambda 表达式只使用一次的函数对象,能否不要专门为其编写一个类?只调用一次的简单函数,能否在调用时才写出其函数体?形式 :[外部变量访问方式说明符](参数表)->返回值类型语句组{ ...原创 2020-03-12 11:30:38 · 574 阅读 · 0 评论 -
C++ 17 实用新特性总结
文章目录关键字 auto模板参数推导元组类 std::tuple变体类型 std::variant智能指针 std::share_ptr引用包装器 std::reference_wrapper转发调用包装器 std::bind多态函数包装器 std::function常用算法函数模板堆操作模板函数红黑树模板类排序算法模板函数连续赋值函数模板移动语义 std::move完美转发 std::forwa...原创 2020-03-17 16:48:47 · 993 阅读 · 0 评论