C/C++
文章平均质量分 87
C/C++
BeZer0
路漫漫其修远兮,吾将上下而求索
展开
-
C++ STL 常用容器
优先队列(priority_queue)头文件#include , 用于自定义数据的优先级, 让优先级高的排在队列前面,优先出队。优先队列具有队列的所有特性与基本操作,本质是一个堆实现的,操作如下:q.top() 访问队头元素q.empty() 队列是否为空q.size() 返回队列内元素个数q.push(xxx) 插入元素到队尾 (并排序)q.pop() 弹出队头元素swap(q...原创 2019-10-21 20:45:34 · 357 阅读 · 0 评论 -
C++ 学习笔记
复习笔记原创 2021-01-13 11:24:21 · 466 阅读 · 0 评论 -
C++ 学习笔记——十二、探讨 C++ 新标准
解决这个问题的方法为不删除 tmp 变量,而是转移所有权,该操作称为移动语义(move semantics),这样避免了删除和拷贝原数据。可以定义两个构造函数,一个是常规拷贝构造函数,使用 const 左值引用作为参数,这个引用关联到左值实参,如语句 1 的 vstr;另一个是移动构造函数,使用右值引用作为参数,该引用关联到右值实参,如语句 2 种 allcaps 函数的返回值 tmp。C++ 11 扩大了用大括号括起的列表(初始化列表)的适用范围,使其可用于所有内置类型和用户定义的类型(即类对象)。原创 2023-03-18 17:51:15 · 9914 阅读 · 0 评论 -
C++ 学习笔记——十、标准模板库
此时由于 demo 函数返回一个临时的 unique_ptr ,然后 ps 接管了原本返回的 unique_ptr 所有的对象,而返回的 unique_ptr 被销毁,这没有问题,因为 ps 拥有了 string 对象的所有权。如果一定要使用第一种方式赋值,可以采用。根据不同智能指针的特点,若有多个智能指针同时指向同一个对象,则使用 shared_ptr ,否则建议使用 unique_ptr。,它们都定义了类似指针的对象,可以将 new 获得的地址赋给它,并且当智能指针过期时,这些内存将自动被释放。原创 2023-03-17 19:22:34 · 9939 阅读 · 1 评论 -
C++ 学习笔记——九、友元、异常和其他
友元类可以位于共有、私有或保护部分,由于 Remote 类提到了 Tv 类,所以编译器必须了解 Tv 类后,才能处理 Remote 类,为此,最简单的方法是首先定义 Tv 类。原创 2023-03-16 21:46:52 · 9906 阅读 · 0 评论 -
C++ 学习笔记——八、代码重用
由于声明为私有成员,此时对于姓名和成绩的管理只能通过成员函数利用姓名类和成绩类的接口来实现,注意,此时学生类并没有获得姓名类和成绩类的接口,而只是通过对象调用他们。那么问题来了,儿砸到底有几个名字?Type 为泛型标识符,被称为类型参数(type parameter),这意味着它类似于变量,但赋给它们的不能是数字,而只能是类型,因此最后一句的参数 Type 的值为 int。但是使用姓名来排序是一件有意义的事情,因此没有继承接口的情况下就需要编写这个成员函数,在函数中通过姓名对象调用它的接口来实现。原创 2023-03-16 20:24:32 · 10152 阅读 · 0 评论 -
C++ 学习笔记——五、内存模型和名称空间
头文件管理:在同一个文件中只能将同一个头文件包含一次,为防止意外,可以采用基于预处理器编译指令#ifndef多个库的链接:由于不同编译器所编译文件的名称修饰不同,可能导致链接器无法将一个编译器生成的函数调用与另一个编译器生成的函数定义匹配,因此在链接编译模块时,应确保所有对象文件或库都是由同一个编译器生成的。原创 2023-03-14 17:09:49 · 447 阅读 · 0 评论 -
C++ 学习笔记——〇、零碎知识
预备知识原创 2023-02-10 10:19:48 · 343 阅读 · 0 评论 -
C++ 学习笔记——一、IO 函数
【代码】C++ 学习笔记——一、IO 函数。原创 2021-01-21 12:28:11 · 195 阅读 · 0 评论 -
C++ 学习笔记——二、复合类型
为指针所分配的空间,并不销毁指针变量本身,特别注意new与delete要配对使用,否则会引发未知后果,对空指针使用。数组采用大括号进行初始化,可以省略等号,但是禁止缩窄转换(例如浮点类型转整型、取值超限等)。运算符创建数组时,将采用动态联编,在运行时分配空间,使用完该数组后需使用。由于指针表示地址,地址中并没有成员的名称,因此不能使用。解除引用即将地址变换为实际值,可以使用间接值运算符。:不同变量共享同一空间,因此需分时使用。将内存地址赋给指针,可以用取地址符。:销毁指针,只是销毁。原创 2021-01-21 11:46:35 · 213 阅读 · 0 评论 -
C++ 学习笔记——三、循环和关系表达式
在运行效率方面,前缀格式将值加 1 ,然后返回结果;后缀格式需要先复制一个副本,然后将原始值加 1 ,再返回副本。表示先对指针接触引用,然后再将取得的值递增。先递增,然后再解除引用,然而后缀运算符返回值是未递增的原始副本,因此接触引用的指针仍是未递增的。该定义方法的原理是为目标变量建立一个别名,而不是在编译前替换相应的程序,因此建议使用。就是应用了逗号表达式,在一条语句中处理了多个关系。表示先对指针解除引用,然后将取得的值递增;该表达式限定了两条语句的执行顺序,保证安全。已经递增,在后续使用中需要注意。原创 2021-01-24 13:57:50 · 228 阅读 · 0 评论 -
C++ 学习笔记——四、函数
只需在函数定义前加上inlineint rats;// &不是地址运算符,而是类型标识符的一部分,即int &是一个整体引用看起来跟指针非常相似,但有一个很大的区别,即引用需要在定义时赋值,而指针则是先定义,再赋值。引用更像是 const 指针,一旦定义即确定下来,不像指针那样可以再指向其他值。引用通常使用在函数的形参中,最常见的按值传递需要创建一个副本,而引用传递则无需副本,因此有更高的性能和效率。原创 2021-01-28 18:09:28 · 301 阅读 · 0 评论 -
C++ 学习笔记——六、类与对象
若想进行上述定义,可以使用重载特性创建第一种情况的默认构造函数,但是一定要注意,不能同时定义第二种、第三种情况的默认构造函数,否则系统将不能确定你想使用哪一种来定义对象,导致错误。如果对象的作用域为整个主函数,那么在 dos 窗口运行环境中,窗口会在析构函数运行之前退出,因此看不到析构函数的输出。该静态类型变量不存储在对象中,而是与其他静态类型存储在一起,被所有对象共享。析构函数是类不可或缺的一份子,若用户没有定义它,则由编译器自动生成。专门用于构造新对象,将值赋给它们的数据成员,名称与类名相同。原创 2021-03-01 22:29:21 · 141 阅读 · 0 评论 -
C++ 学习笔记——七、类的高级特性
/ 栗子: A = B * 2;// 重载后的运作方式: A = B . operator *(2);// 调换顺序时产生了问题: A = 2 * B;// 由于数字2不是该类的对象,因此没有这种操作,出现错误// 利用传递参数解决问题但是这样又出现了新的问题,由于对象的成员变量通常是私有的,因此不能直接用非成员函数访问。为了解决这个问题,便出现了友元函数。// 现在有一个基础类Time,它的继承类可以如下定义: class Time2 : public Time {. . . };原创 2021-03-03 17:23:50 · 220 阅读 · 2 评论 -
C++ 学习笔记——十一、输入、输出和文件
学过计组的朋友应该知道,计算机对于输入输出数据的处理通常是使用流式传输的方式通过接口暂存处理的,因此 C++ 中对于输入输出的处理采用了流式处理,从缓冲区中收/发数据。当 C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开的文件。唯一不同的是,在这里使用的是。唯一不同的是,在这里使用的是。对象都可以用来打开文件进行写操作,如果只需要打开文件进行读操作,则使用。在从文件读取信息或者向文件写入信息之前,必须先打开文件。原创 2021-03-05 17:37:13 · 174 阅读 · 0 评论