随笔分类 - c++
c++
摘要:野指针和悬空指针 野指针:定义的时候没有初始化 悬空指针:就是free或delete后没有及时置空 一个指针free或者delete掉后要不要置空 肯定要啊,不置空就是悬空指针了
阅读全文
摘要:四种强制转换 const_cast 去除指针或引用的const属性 什么场景会用 1《effective c++》第三条 当要写一个operator[]操作符重载,他会不断循环调用自己,所以先static_cast<const xxx*>(*this),来强制调用const operator[]函数
阅读全文
摘要:git rebase rxx 1.多个commit合并 2.变基 把提交的基 改变 端口怎么看,tcp udp怎么看,不能用怎么查(占用,防火墙) lsof -i:端口号 可以看端口(list open files) netstat -tunlp 可以看端口、tcp、udp https://blog
阅读全文
摘要:C++空指针可以调用类成员函数,但是【不能调用】类中的【虚函数】 一个对象的指针可以调用它的成员函数和虚函数, 那么如果一个指向空nullptr的指针,能不能调用它的成员函数和虚函数。 ``` #include<iostream> using namespace std; class A { pub
阅读全文
摘要:一、整型数组输入: (很简单)在终端的一行中输入固定数目的整型数字,并存到数组中,中间以空格分隔。 示例: 3 1 2 3 int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; ++i){ cin >> nums[i]; } (重难
阅读全文
摘要:学习方法:类比单链表 和单链表的查找、插入做类似比较 核心思路:空间换时间 跳表的核心原理就是 用空间换时间,使得可以以二分的方式来进行节点的搜索 我的github: https://github.com/atomxing/skiplist 单链表查找很慢 必须遍历所有节点 添加部分索引加速查找 t
阅读全文
摘要:概述 STL中提供了一个sort()函数,用于排序。它的实现虽然是基于我们熟悉的quick sort, insertion sort, heap sort,但是内部却庞大复杂。sort()函数只能接受RandomAccessIterators,list slist都不能使用。 STL中的sort()
阅读全文
摘要:static修饰的函数叫做静态函数,静态函数有两种,根据其出现的地方来分类: 1.如果这个静态函数出现在类里,那么它是一个静态成员函数; 静态成员函数的作用在于:调用这个函数不会访问或者修改任何对象(非static)数据成员。 其实很好理解,类的静态成员(变量和方法)属于类本身,在类加载的时候就会分
阅读全文
摘要:侯捷老师总结的一张非常好的表格:注意画叉×的地方 另外要注意的是: 一:这个才是const函数!!! int linktime() const { return linktime_; } 这个只是返回值是const int的函数: const int linktime() { return link
阅读全文
摘要:一、头文件 #include<algorithm> using namespace std; 二、使用sort() 1.函数原型 sort(begin, end); sort(begin, end, pred); 作用:可以用来排序数组,容器等。 参数: begin:排序区间的起始位置 end:排序
阅读全文
摘要:最新知识:三种string实现方式: 是直接拷贝(eager copy) 类似vector 内嵌char*指针 现在基本不用 是copy on write 对多线程性能不好 g++采用这个方式 则是短字符串优化SSO string对象本身空间存储字符串 现在用的多 陈硕的《Linux多线程服务端编程
阅读全文
摘要:大致有一下几种方法实现用于把一个vector赋值给另一个vector: 2022年5月18日09:48:50 set map也是可以使用下面方法的 方法1: vector<int > v1(v2); //声明,只有在声明、初始化的时候能用 方法2:使用swap进行赋值:注意会进行交换,原容器数据丢失
阅读全文
摘要:对象类型名 + () 没有变量名 就是临时对象,是典型的右值 右值的生命周期是短暂的,右值具有两个特点: 所引用的对象即将被销毁; 该对象没有其他用户。 这两个特点决定了,可以窃取右值对象的资源,这也为后面的移动构造函数和移动赋值操作符的实现奠定了数据基础。 一般写法,定义一个vector vect
阅读全文
摘要:自由存储区和堆的区别是一个老生常谈的问题了,就像面试题new和malloc的区别一样。事实上,网上多说人认为,自由存储区与堆的划分标准是申请和释放内存是使用的new/delete还是malloc/free。C++标准并没有给出new/delete应该如何实现,但很多编译器的new/delete都是以
阅读全文
摘要:常见的不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。 1.为什么C++不支持普通函数为虚函数? 普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。 2.为什么C++不支持构造
阅读全文