本文介绍了C++ 运算符重载的用法,以我们构造的string类为例子,说明重载的用法。
构造我们自己的string类
声明如下
1 | class mystring_ |
本文介绍了C++ 运算符重载的用法,以我们构造的string类为例子,说明重载的用法。
声明如下
1 | class mystring_ |
有一个连续的int数组,数组中的数据升序排序,数组中的数据不唯一,有重复数据,要求在数组中查找指定值为target的数据,返回target最小的下标,如果找到返回其最小的下标,如果没有找到,返回-1, 要求用 用二分查找的方式解决上述问题, 要求时间复杂度为Olog(n),空间复杂度为O(1)
举例 数组nums = [0,1,1,3,3,4], 查找target为1的数据最小的下标则返回1。如果查找target为100,则返回-1
用二分查找解决上述问题,用一个数组中间的数据和target比较,如果中间值比target小,则说明target在中间值右侧。
如果中间值比target大,则说明target在中间值左侧。
如果中间值和target相等,则找到该target的位置,但是由于target不唯一,所以要向左移动,找到target最小的下标。
这篇文章讲解C++ 面试常问的几个问题。本文通过demo讲解初始化列表,继承,字符串等常问问题。看下边这个例子
1 | //基类 |
实现了一个类Base,类的构造函数采用了初始化列表,初始化列表按顺序初始化初始类成员。
接下来在main函数里调用如下
js版本过高会导致调用hexo g 命令时出现问题。建议使用node.js 12以下版本,我用的是v12.18.3
历史版本下载可以参考如下链接
https://nodejs.org/en/download/releases/
如果想要管理多个版本的node,可以通过nvm管理,nvm下载和安装可以自行百度。
我们可能会遇到如下问题,当我们执行hexo g 时
hexo版本更新报错:INFO Validating config WARN Deprecated config detected: “external_link“ with a Boolean
解决方案是
将原有的
1 | external_link: |
修改为
1 | external_link: |
执行hexo clean ,然后再次hexo g 生成文章。
之前我们讲述过动态内存的开辟,可以通过new, malloc,以及alloc等方式,本文通过介绍alloc方式,构造一个StrVec类,这个类的功能类似于一个vector,实现字符串的管理,其中包含push一个字符串,动态扩容,析构,回收内存等操作。
StrVec类实现如下
1 | class StrVec |
前文我们介绍了HasPtr类的拷贝控制,实现了行为像值的类,所谓行为像值的类就是我们所说的深拷贝,将一个类对象拷贝给另一个类对象时,其所有的成员都作为副本在新的类对象创建一遍,如果是指针类型的成员,则将指针指向的空间的数据复制一份给新对象,这样两个对象所有的成员都不关联,实现了深拷贝,不会受彼此影响。比如之前的HasPtr的拷贝构造
1 | HasPtr::HasPtr(const HasPtr &hp) |