摘要: https://www.nowcoder.com/study/live/690/5/9 面试官的问题: ①智能指针用来干什么的,有哪几种 ②怎么实现的 有四种智能指针(第一种抛弃了) 如果我在delete前有异常检测,并且发生了异常,那么就会跑出异常,并且没有进行delete,造成内存泄漏 使用智能 阅读全文
posted @ 2022-08-30 21:57 atomxing 阅读(30) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-08-30 21:54 atomxing 阅读(21) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-08-30 21:52 atomxing 阅读(31) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-08-30 21:51 atomxing 阅读(37) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-08-30 21:51 atomxing 阅读(23) 评论(0) 推荐(0)
摘要: #include<iostream> 写文件 ofstream 追加模式 写文件 ifstream #include <fstream> fstream output; output.open("file.txt", ios::app); output << state_.mprset_.size( 阅读全文
posted @ 2022-08-30 21:51 atomxing 阅读(26) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-08-30 21:50 atomxing 阅读(28) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-08-30 21:49 atomxing 阅读(69) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-08-30 21:49 atomxing 阅读(45) 评论(0) 推荐(0)
摘要: https://yngzmiao.blog.csdn.net/article/details/105247065 阅读全文
posted @ 2022-08-30 21:48 atomxing 阅读(38) 评论(0) 推荐(0)
摘要: va_list介绍 https://blog.csdn.net/weixin_40332490/article/details/105306188 无名无奈 于 2020-04-04 09:59:23 发布 va_list是在C语言中解决变参问题的一组宏,变参问题是指参数的个数不定,可以是传入一个参 阅读全文
posted @ 2022-08-30 21:48 atomxing 阅读(1723) 评论(0) 推荐(0)
摘要: https://blog.csdn.net/l2563898960/article/details/97769569 阅读全文
posted @ 2022-08-30 21:47 atomxing 阅读(30) 评论(0) 推荐(0)
摘要: static修饰的函数叫做静态函数,静态函数有两种,根据其出现的地方来分类: 1.如果这个静态函数出现在类里,那么它是一个静态成员函数; 静态成员函数的作用在于:调用这个函数不会访问或者修改任何对象(非static)数据成员。 其实很好理解,类的静态成员(变量和方法)属于类本身,在类加载的时候就会分 阅读全文
posted @ 2022-08-30 21:46 atomxing 阅读(287) 评论(0) 推荐(0)
摘要: https://blog.csdn.net/qq_40132943/article/details/122790084 阅读全文
posted @ 2022-08-30 21:45 atomxing 阅读(26) 评论(0) 推荐(0)
摘要: 含义 move和forward都是C++11中引入的,它们是移动语义和完美转发实现的基石。 move:不能移动任何东西,它唯一的功能是将一个左值强制转化为右值引用,继而可以通过右值引用使用该值,以用于移动语义 从实现上讲,std::move基本等同于一个类型转换:static_cast<T&&>(l 阅读全文
posted @ 2022-08-30 21:45 atomxing 阅读(164) 评论(0) 推荐(0)
摘要: 侯捷老师总结的一张非常好的表格:注意画叉×的地方 另外要注意的是: 一:这个才是const函数!!! int linktime() const { return linktime_; } 这个只是返回值是const int的函数: const int linktime() { return link 阅读全文
posted @ 2022-08-30 21:45 atomxing 阅读(277) 评论(0) 推荐(0)
摘要: 自定义排序方法有 1. 重载<操作符 2. 定义cmp比较函数,重载()操作符 但是如果是存的指针元素,然后还要有序的话,只能使用第二种排序方法。 https://blog.csdn.net/weixin_44307065/article/details/109263697 阅读全文
posted @ 2022-08-30 21:44 atomxing 阅读(58) 评论(0) 推荐(0)
摘要: 既然是队列那么先要包含头文件#include <queue>, 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队 优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的 和队列基本操作相同: top 访问队头元 阅读全文
posted @ 2022-08-30 21:43 atomxing 阅读(89) 评论(0) 推荐(0)
摘要: 2022年8月12日22:11:54 注意实现仿函数的时候最后面要加const 仿函数概念 1. 尽管函数指针被广泛用于实现函数回调,但C++还提供了一个重要的实现回调函数的方法,那就是函数对象。 2. functor,翻译成函数对象,伪函数,它是是重载了"()"操作符的普通类对象。从语法上讲,它与 阅读全文
posted @ 2022-08-30 21:42 atomxing 阅读(74) 评论(0) 推荐(0)
摘要: 可以对比优先队列学习 排序 set 支持自动排序,默认是由小到大排,和很多其他排序数据结构一样,也可以手写排序,就是重载小于号; 如果是单纯的要由大到小排也可以:set< int,greater<int> >se;//由大到小排序 如果有多个关键字,那么可以手写结构体,重载小于号; //x为第一关键 阅读全文
posted @ 2022-08-30 21:42 atomxing 阅读(324) 评论(0) 推荐(0)
摘要: 一、头文件 #include<algorithm> using namespace std; 二、使用sort() 1.函数原型 sort(begin, end); sort(begin, end, pred); 作用:可以用来排序数组,容器等。 参数: begin:排序区间的起始位置 end:排序 阅读全文
posted @ 2022-08-30 21:41 atomxing 阅读(114) 评论(0) 推荐(0)
摘要: reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,必须要用push_back()/insert()函数。 resize是改变容器的大小,并且创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operat 阅读全文
posted @ 2022-08-30 21:40 atomxing 阅读(277) 评论(0) 推荐(0)
摘要: 序列式容器vector,deque 使用erase删除迭代器后,后面的元素的迭代器会失效。但是erase会返回下一个有效的迭代器。 int main() { vector<int> v{ 1,2,3,4 }; vector<int>::iterator it = find(v.begin(), v. 阅读全文
posted @ 2022-08-30 21:40 atomxing 阅读(273) 评论(0) 推荐(0)
摘要: 需要包含头文件 #include <ctype.h> isdigit( ) 函数可以用来判断字符是否为数字 功能:当判断的字符是数字时,函数返回1~9的非零值,当判断的字符不是数字时,函数返回 0 isalpha() 函数用于判断一个字符是否为字母,位于头文件 cctype 中。 https://b 阅读全文
posted @ 2022-08-30 21:39 atomxing 阅读(143) 评论(0) 推荐(0)
摘要: stoi() 和atoi() 函数将字符串转化为int型 区别是stoi的形参是const string*,而atoi的形参是const char*。c_str()的作用是将const string*转化为const char* 来自 <https://blog.csdn.net/Sarah_212 阅读全文
posted @ 2022-08-30 21:35 atomxing 阅读(25) 评论(0) 推荐(0)
摘要: 最新知识:三种string实现方式: 是直接拷贝(eager copy) 类似vector 内嵌char*指针 现在基本不用 是copy on write 对多线程性能不好 g++采用这个方式 则是短字符串优化SSO string对象本身空间存储字符串 现在用的多 陈硕的《Linux多线程服务端编程 阅读全文
posted @ 2022-08-30 21:34 atomxing 阅读(34) 评论(0) 推荐(0)
摘要: 来自 https://blog.csdn.net/qq_33210042/article/details/119390196 C++ string字符串的比较是否相等 可以使用compare 也可以使用"==" 1 使用比较运算符 == > #include <iostream> #include 阅读全文
posted @ 2022-08-30 21:33 atomxing 阅读(131) 评论(0) 推荐(0)
摘要: c++中string的用法 具体见:string 截取、替换、查找字符串 简介 或者: <https://blog.csdn.net/qq_30534935/article/details/82227364> https://blog.csdn.net/weixin_44503157/article 阅读全文
posted @ 2022-08-30 21:32 atomxing 阅读(90) 评论(0) 推荐(0)
摘要: 之前都是记在自己腾讯云上搭的WordPress,下个月到期,迁移到博客园。记录一下。 阅读全文
posted @ 2022-08-30 21:30 atomxing 阅读(1) 评论(0) 推荐(0)
摘要: 大致有一下几种方法实现用于把一个vector赋值给另一个vector: 2022年5月18日09:48:50 set map也是可以使用下面方法的 方法1: vector<int > v1(v2); //声明,只有在声明、初始化的时候能用 方法2:使用swap进行赋值:注意会进行交换,原容器数据丢失 阅读全文
posted @ 2022-08-30 21:20 atomxing 阅读(2831) 评论(0) 推荐(0)
摘要: 对象类型名 + () 没有变量名 就是临时对象,是典型的右值 右值的生命周期是短暂的,右值具有两个特点: 所引用的对象即将被销毁; 该对象没有其他用户。 这两个特点决定了,可以窃取右值对象的资源,这也为后面的移动构造函数和移动赋值操作符的实现奠定了数据基础。 一般写法,定义一个vector vect 阅读全文
posted @ 2022-08-30 21:19 atomxing 阅读(65) 评论(0) 推荐(0)
摘要: 自由存储区和堆的区别是一个老生常谈的问题了,就像面试题new和malloc的区别一样。事实上,网上多说人认为,自由存储区与堆的划分标准是申请和释放内存是使用的new/delete还是malloc/free。C++标准并没有给出new/delete应该如何实现,但很多编译器的new/delete都是以 阅读全文
posted @ 2022-08-30 21:18 atomxing 阅读(307) 评论(0) 推荐(0)
摘要: vector: empty() 如果队列空则返回true pop_back() 删除数组尾端元素 push_back() 在数组尾插入一个元素 size() 返回队列中元素个数 front() 返回队列中的第一个元素 back() 返回队列中最后一个元素 v.insert() 插入元素 emplac 阅读全文
posted @ 2022-08-30 21:18 atomxing 阅读(42) 评论(0) 推荐(0)
摘要: 各段的介绍 一般情况下,一个可执行C程序在内存中主要包含5个区域,分别是代码段(text),数据段(data),BSS段,堆段(heap)和栈段(stack)。其中前三个段(text,data,bss)是程序编译完成就存在的,此时程序并未载入内存进行执行。后两个段(heap,stack)是程序被加载 阅读全文
posted @ 2022-08-30 21:18 atomxing 阅读(1768) 评论(0) 推荐(0)
摘要: 常见的不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。 1.为什么C++不支持普通函数为虚函数? 普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。 2.为什么C++不支持构造 阅读全文
posted @ 2022-08-30 21:17 atomxing 阅读(162) 评论(0) 推荐(0)
摘要: https://blog.csdn.net/hazir/article/details/21413833 weixin_431086412021.02.20 1补充一下,64位机器的话,现在是多分配8个字节而不是4个字节了。另外,new和delete是可以重载的 m0_53903451回复weixi 阅读全文
posted @ 2022-08-30 21:17 atomxing 阅读(29) 评论(0) 推荐(0)
摘要: 2022年6月21日09:42:49 不应该死记硬背 首先应该了解string内部的实现原理,这样string和char*的转换的很简单了 有关string和char的转换 string内部有个const get_c_str()函数,就是为了获取string内部的char成员,然后就可以转为cons 阅读全文
posted @ 2022-08-30 21:16 atomxing 阅读(47) 评论(0) 推荐(0)
摘要: 父类指针指向子类对象,子类指针不能指向父类对象 总结: <1>.当基类指针指向派生类的时候,只能操作派生类从基类中继承过来的数据.(重写虚函数得到的函数也算继承过来的数据) <2>.当派生类指向基类的指针,因为内存空间比基类长,访问的话会导致内存溢出,所以不允许派生类的指针指向基类。 加深理解: < 阅读全文
posted @ 2022-08-30 21:15 atomxing 阅读(364) 评论(0) 推荐(0)
摘要: 一、new了一个对象,计数;delect一个,减数;最后要为零 二、智能指针 三、(会被继承的)基类的析构函数一定得是虚函数 四、new [] 数组对象,且这个对象的析构函数是有意义的,那么delect的时候也要加上[],不然就不会全部删除,会内存泄漏。 2022年6月23日14:38:02 发生内 阅读全文
posted @ 2022-08-30 21:15 atomxing 阅读(54) 评论(0) 推荐(0)
摘要: 来自 <https://blog.csdn.net/zhejfl/article/details/90199200> 重载(overload):是(同一个类中)函数名相同,参数列表不同。 重写(override):也叫覆盖。子类重新定义父类中有相同名称和参数的虚函数(virtual)。在继承关系之间 阅读全文
posted @ 2022-08-30 21:15 atomxing 阅读(178) 评论(0) 推荐(0)
摘要: 字符串输入遇到空格问题 cin遇到空格会停止 输入一句英文,存入一个字符串 使用:getline(cin, s) 例如: i am a boy getline是碰到终止符才停止 如果你要把一个个单词存成一个string 使用:while(cin >> s){} 去除某个字符可以用fstream 或者 阅读全文
posted @ 2022-08-30 21:14 atomxing 阅读(40) 评论(0) 推荐(0)
摘要: 虚函数详解: https://blog.csdn.net/lyztyycode/article/details/81326699 虚函数作用主要是实现了多态机制。多态就是用父类类别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可与让父类的指针有"多种形态"。(这是一种泛型 阅读全文
posted @ 2022-08-30 21:11 atomxing 阅读(141) 评论(0) 推荐(0)