C/C++
文章平均质量分 57
学习笔记
Spikeeee-
消磨到死的那些希望的亡灵:苍白、凄惨、哭的哀伤。
展开
-
C++ - STL vector.reserve()&.push_back()
频繁使用std::vector的push_back操作前最好使用reserve预留出相应内存,这样可以减小动态重分配内存所占用的时间,从而增加运行速度。原创 2023-12-30 02:21:14 · 515 阅读 · 0 评论 -
C++ - 深拷贝与浅拷贝 bitwise senimatics和memberwise senimatics
mat_copy._pmat和mat._pmat指向的是同一段地址,在第一次析构mat时,指向的堆内存已经被释放,因此第二次析构mat_copy时,再次释放同一段内存地址,便会造成运行错误。如果类中拥有指针成员变量,而其指向堆中的一片区域,在赋值过程中,只是将指针的值进行了赋值,这样一来,这两个对象中的指针变量自然都是指向同一片内存区域了,即所谓的。所以这时就需要程序员自己来实现拷贝构造函数来完成那片堆内存的拷贝赋值操作,即所谓的深拷贝。我们发现会在析构mat_copy时运行出错,因为由于是。原创 2023-12-30 15:29:49 · 547 阅读 · 0 评论 -
C++ - sstream标准库(串流控制)
istringstream类是从istream(输入流类)和stringstreambase(c++字符串流基类)派生而来,ostringstream是从ostream(输出流类)和stringstreambase(c++字符串流基类)派生而来,stringstream则是从iostream(输入输出流类)和和stringstreambase(c++字符串流基类)派生而来。其次,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。原创 2022-12-21 15:49:47 · 839 阅读 · 0 评论 -
C++ - 异常类体系(exception class hierarchy)
C++标准库定义了一套异常类体系(exception class hierarchy),其根部是名为exception的抽象基类,标准库抛出的异常都是 exception 的子类,称为标准异常(Standard Exception)。exception声明有一个what()虚函数,会返回一个const char *,用以表示被抛出异常的文字描述。如果不使用引用,就要经历一次对象拷贝(要调用拷贝构造函数)的过程。将iterator_overflow融入标准的exception类体系的好处是,它。原创 2022-12-21 14:34:44 · 550 阅读 · 0 评论 -
C++ - member_template_function样例
【代码】C++ - member_template_function样例。原创 2022-12-20 16:02:35 · 69 阅读 · 0 评论 -
C++ - 二叉树template实现
【代码】C++ - 二叉树template实现。原创 2022-12-19 18:39:45 · 188 阅读 · 0 评论 -
C++ - 基类应该有多么抽象(样例)
*派生类:**Fibonacci.h、Fibonacci.cpp。**基类:**num_sequence.h。该文章结尾样例的补充。原创 2022-12-18 14:28:36 · 242 阅读 · 0 评论 -
C++ - 面向对象编程方法
以对象为基础(object-based)”的类机制无法针对如“are-a-kind-of(隶属同类)”的Book类的共通性质进行系统化的划分(如:RentalBook、AudioBook、InterativeBook)。因此,类间的关系有赖于“面向对象编程模型(object-oriented programming model)”加以设定。原创 2022-12-15 15:22:35 · 748 阅读 · 0 评论 -
C++ - 泛型指针使用示例
等后面学完了再来细写,先备份个代码。原创 2022-10-19 16:09:03 · 506 阅读 · 0 评论 -
C++ - 插入迭代器(Iterator Inserter)
插入迭代器(Insert Iterator),又叫插入器(Inserter)。插入迭代器的主要功能为把一个赋值操作转换为把相应的值插入容器的操作。插入迭代器对标准算法库而言尤其重要。决不修改容器的大小(不插入、不删除)。有了插入迭代器,既使得算法库可以通过迭代器对容器插入新的元素,又不违反这一承诺,即保持了设计上的一致性。原创 2022-10-23 15:20:31 · 1534 阅读 · 0 评论 -
C++ - iostream Iterator示例
将istream_iterator绑定至ifstream object;将ostream_iterator绑定至ofstream object。原创 2022-10-23 15:47:02 · 271 阅读 · 0 评论 -
C++ - 泛型算法(algorithm)
集合中是否存在某值。搜索范围由iterator[first, last)标出。如果找到目标,find()会返回一个iterator指向该值,否则返回一个iterator指向last。比对某个容器内是否存在某个子序列。若子序列存在则返回一个iterator指向子序列起始处;否则返回一个iterator指向容器末尾。如果搜索到目标,就返回true;否则返回false。需要确保”目标容器“拥有足够空间放置每个即将到来的元素。返回数值相符的元素数目。原创 2022-10-21 15:52:30 · 307 阅读 · 0 评论 -
C++ - 顺序性容器(vector、list、deque)
顺序性容器用来维护一组排列有序、类型相同的元素。原创 2022-10-21 15:12:30 · 276 阅读 · 0 评论 -
C++ - 函数指针使用示例
【代码】C++ - 函数指针使用示例。原创 2022-10-18 22:10:50 · 153 阅读 · 0 评论 -
C++ - 重载函数与模板函数(function template)
重载函数通常用来在同一个作用域内用同一个函数名命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。function template 将参数列表中指定的全部(或部分)参数的类型信息抽离了出来。在C++中,虽然重载函数的函数名一样,但其在符号表中生成的名称并不相同。原创 2022-10-18 17:33:35 · 286 阅读 · 0 评论 -
C++ - 内存管理与动态内存管理
若该对象的内存在main()开始之前便已经分配好,可以一直存在至程序结束。局部静态变量与局部非静态变量不同的是,局部静态对象所处的内存空间,即使在不同的函数调用过程中,依然持续存在。若每次程序段(函数)执行,都会为该对象分配内存,当程序段运行结束后该对象内存便会释放,则称此对象具有。2.频繁的申请空间和释放空间,容易造成内存碎片,甚至内存泄漏,栈区由于是自动管理,不存在此问题。这种内存由程序员自行管理,其分配系通过new表达式来完成,其释放则通过delete表达式完成。为对象分配的内存,其存活时间称为。原创 2022-10-18 16:27:10 · 596 阅读 · 1 评论 -
C++ - 文件读写(fstream)
如果文件名不存在,则会在当前文件目录下创建一个新文件。文件中原有数据会被清空。“outfile”返回值为布尔值,代表文件是否打开成功若文件打开成功,则文件的写入位置设定在文件的起始位置处。原创 2022-10-18 14:08:32 · 1145 阅读 · 1 评论 -
C++ - 虚函数、纯虚函数与抽象类
这为派生类提供了备用或默认的行为. C++的虚基类的虚析构函数必须提供函数体定义,否则链接时(linking)在析构该抽象类的派生实例对象的语句处会报错。原创 2022-10-15 15:28:18 · 1309 阅读 · 0 评论 -
C++ - 类的大小计算
类只是一种类型定义,它本身是没有大小可言的。类的大小,指的是类的实例化对象所占的大小C++的空类是指这个类不带任何数据,即类中没有非静态(non-static)数据成员变量,没有虚函数(virtual function),也没有虚基类(virtual base class)。直观地看,空类对象不使用任何空间,因为没有任何隶属对象的数据需要存储。然而,C++标准规定,凡是一个独立的(非附属)对象都必须具有非零大小。C++标准指出,不允许一个对象(当然包括类对象)的大小为0,不同的对象不能具有相同的地址。原创 2022-10-15 14:13:57 · 901 阅读 · 0 评论 -
C++ - 结构体内存对齐原则
程序定义的数据都要存放到内存中,如果数据起始的内存地址是自身长度的整数倍那么该数据的内存是对齐的。原创 2022-10-15 13:07:22 · 678 阅读 · 0 评论 -
C语言实现pong游戏
#include<iostream>#include<string>#include<cstdlib> #include<ctime>#include<conio.h>#include<windows.h>using namespace std;const int long_l = 90, wide_w = 40;const int b_l = 2, b_w = 8;const int b_v = 2;void go原创 2020-05-11 14:03:03 · 938 阅读 · 0 评论 -
C语言实现彩色贪吃蛇
#include<stdio.h>#include<time.h>#include<Windows.h>const int HEIGHT = 20;const int WIDTH = 40;struct Snakebody { int x, y; struct Snakebody* next;};struct Snakefood { int x; int y;};int sum = 0,JudgeSum = 0, Hard原创 2020-05-11 13:56:32 · 774 阅读 · 0 评论 -
(c++) str.erase() & str.find_first(last)_not_of()用法
#include<iostream>#include<algorithm>#include<string>#include<cstdio>#include<map>using namespace std;const int maxn = 5e4 + 100;#define TLE ios::sync_with_stdio(0),cin.tie(0)const int INF = 0x3f3f3f3f;#define ll long原创 2020-08-08 23:56:39 · 861 阅读 · 0 评论 -
int& a (cpp学习笔记)
int a 定义一个变量aint& a 定义一个引用//给同一地址取别名;eg:int b ;int &a=b;输出可知 &a = &b原创 2020-04-26 15:57:23 · 1233 阅读 · 0 评论 -
(c++) count函数用法-统计string里面出现的字符的个数
count(begin,end,‘a’),其中begin指的是起始地址,end指的是结束地址,第三个参数指的是需要查找的字符。返回值为str中’a’出现次数;例如:str.size() == count(str.begin(), str.end(), ’ ') //检测是否为空行...原创 2020-08-31 22:18:27 · 4603 阅读 · 0 评论