
c++
文章平均质量分 53
程序员小董
毕业后先在腾讯做了近3年的kv存储引擎开发
之后在阿里做了3年多互动游戏的开发
展开
-
关于shared_ptr
我们可以看到person 构造了两次 析构了两次 但是 bed 只构造了一次 也析构了一次。原创 2025-03-10 17:16:43 · 211 阅读 · 0 评论 -
谈谈Libaio
但是 我找了半天 都没有一个能运行的例子。一段代码不能运行和shi有什么区别?下面的例子是直接把一个person list写入裸盘,再读出来进行校验的例子。网络上有一堆 aio的例子和说明。原创 2025-02-17 17:03:26 · 147 阅读 · 0 评论 -
Cmake静态库与动态库的构建与使用
但是ForHello_local_share 还动态依赖原来的库,你把目录名称改了,ForHello_local_share 想要去找hello_share这个动态库自然找不到了。ForHello_local_static 已经把库加到自己里面了,外面的库有什么变化,对ForHello_local_static 本身已经没有影响了。之后 我们可以看到两个可执行文件:ForHello_local_static 和ForHello_local_share。假定库不是我们的项目产生的,而是别人给的呢?原创 2024-07-04 00:22:18 · 467 阅读 · 0 评论 -
关于c++的友元类
【代码】关于c++的友元类。原创 2024-07-30 17:17:34 · 249 阅读 · 0 评论 -
谈谈std::map的lower_bound
我们知道std::map内部是一个红黑树,放到std::map里的数据等有一个能比较大小的方法。它相当于java里面的TreeMap。它里面有个lower_bound方法,返回一个迭代器,它指向map里第一个大于等于参数的元素。方法的签名很简单,但是在不同情况下,它的返回值还是有些麻烦的,这里记录一下。分别指明下面几种case。原创 2024-05-14 10:08:09 · 673 阅读 · 0 评论 -
关于In template: no matching constructor for initialization of
n),而没有默认构造函数(即没有不带参数的构造函数),当std::map试图为键20默认构造一个Extent对象作为占位符时,就会找不到合适的构造函数来匹配,从而引发“no。Extent>,即键是int类型,值是Extent类型的对象。int>),插入操作不涉及复杂的对象构造,因为其值类型是基本类型int,可以直接进行复制赋值,所以不会遇到构造函数匹配的问题。赋值或插入:接着,如果找到了键20,则直接对该键对应的值进行赋值;在您提供的代码中,map3是一个std::map<int,基础不牢,地动山摇!原创 2024-05-13 21:33:53 · 709 阅读 · 0 评论 -
将C语言宏定义转换成字符串
https://blog.youkuaiyun.com/happen23/article/details/50602667原创 2024-01-30 14:29:40 · 1041 阅读 · 0 评论 -
关于c++里string的底层存储布局
另外以上面的代码为例,b的地址是0x7fffffffe760,这个一直不会变,但是随着代码的运行,b的地址是0x7fffffffe760里面首8个字节的数据会改变,并不是一直都是7fffffffe770,这个应该是为了防止内存越界吧。string在c++里面的变量的地址,其实是一个8字节的指针,存放着数据的真实地址,之后的8个字节是一个数字代表了字符串的长度。是的,是凑巧,如果咱们的代码里面多申请几个变量,0x7fffffffe760里面存放的就不一定是16个字节以后的位置了。OK,咱们总结以下。原创 2024-01-25 11:48:05 · 493 阅读 · 0 评论 -
Windows下使用clion调试LevelDB与rocksdb
使用clion打开项目,在根目录下新建一个app目录,app目录下新建一个main.cpp。在CMakeList.txt里面寻找leveldbutil字符串,然后在下面增加。原创 2024-01-11 17:27:31 · 851 阅读 · 0 评论 -
windows下使用gtest
我是在window下使用clion来写c++的,最近学习了gtest,中间遇到了一些问题,记录一下。原创 2023-12-21 20:46:53 · 855 阅读 · 0 评论 -
c的编译链接与执行
就是处理#define,#if同时还有把#include包含的文件插入到该指令的位置。使用gcc hello.c可以将我们的源代码翻译成a.out这个可执行文件。因为#include包含的文件插入到该指令的位置,所以.i文件一般比较大。我们一般使用gcc -E hello.c -o hello.i。我们具体的说,gcc hello.c -o myhello。我想在b.cpp中引用等于10的这个k就得在b.cpp中写。或者gcc hello.c -o hello.out。预处理生成的文件的后缀名一般是.i。原创 2023-12-06 16:31:38 · 516 阅读 · 0 评论 -
聊聊c++中的set
在java中,存放不同元素的容器是set,元素是否相同使用equals方法和hashCode方法来定义。假如要给set中存放自定义类,那么就得实现equals方法和hashCode方法。在c++中也有c++,用来存放不同的元素,天真的我也就直接使用了set,并且重载了==运算符结果发现,里面是有问题。c++中的set有两种,分别是c++中的std::set,是基于红黑树的平衡二叉树的数据结构实现的原创 2017-12-12 21:07:05 · 892 阅读 · 1 评论 -
c++备忘知识
获得当前的时间戳单位是毫秒chrono是c++11提出的因此 编译的时候得加上 -std=c++11 如下:g++ getTime.cpp -o getTime -std=c++11#include#include using namespace::std;using namespace::chrono;int main() { auto time_now = system_c原创 2017-10-24 16:03:46 · 601 阅读 · 0 评论 -
c++中map排序
首先,得说明,在c++中有两个关联容器,第一种是map,内部是按照key排序的,第二种是unordered_map,容器内部是无序的,使用hash组织内容的。对有序map中的key排序如果在有序的map中,key是int,或者string,它们天然就能比较大小,本身的就是有序的。不用额外的操作。如果map中的key是自定义类型呢?#include#include #include #inc原创 2017-10-18 15:40:32 · 3668 阅读 · 0 评论