
标准C++
Coder.Z
这个作者很懒,什么都没留下…
展开
-
记C++坑:5.默认的隐式类型转换
最近排查解决一个项目中的性能问题,发现在一个工作线程中有这么一段代码:uint64_t servive_loops = 0;while(true){ // 业务逻辑代码 if (servive_loops % 1000 == 0) // 标记-1 { RecodeServiceStatistics(m_statistics); } ...原创 2018-09-20 20:51:38 · 536 阅读 · 0 评论 -
c++11实现强类型缓存系统
提示: 此博客中代码不一定是最新,最新代码请参考:https://github.com/xj-zhu/ttl_cache开篇: 看到这篇文章,或许你会有以下疑问: 现在有各种开源的内存k-v缓存数据库,为啥要自己搞一个? 几点解释: 1. 这些k-v系统一般都比较重量级,当然相对于关系型数据库可能还好,但是相对于我的这个实现原创 2017-11-08 19:35:49 · 1614 阅读 · 0 评论 -
记一道关于链表逆序的面试题
上周末参加了一次面试,国内知名互联网企业,面试全程也是相当紧张。 在第二轮当中,面试官让手写一个“最简单的”链表反转函数。 在以前的面试中我也遇到面试官要线程写链表反转,我一般都会写循环迭代的方式,因为这题主要是考察指针使用的灵活程度,代码并不复杂,两个指针一次遍历并反转next指针指向就好了。 并且据我的经验,如果写成递归形式,那么最终的执行过程中不断调用调用有可能原创 2017-12-28 13:38:11 · 313 阅读 · 0 评论 -
记C++坑:3.结构体和类对齐补齐
背景:项目从旧的编译器(VC6)移植到新编译器(VS2015)。移植过程中有很多的编译错误连接错误都一一解决之后,运行,发现崩溃,错误为声明一个类类型对象变量时候堆栈错误。导致出现内存问题。因为是移植项目,原来的编译器编译的版本跑起来好好的,所以没太怀疑时代码问题,最开始的思考思路一直集中在是不是使用的lib库有问题,检查项目配置,检查各个库的版本,都没有什么发现,后来再来看代码,发现真的原创 2017-04-13 14:56:41 · 1309 阅读 · 0 评论 -
三年经验c++程序员所不应该犯的错误
这里只说c++,并且因为不同的开发者平台不同,方向不同,依赖于编程环境的一些问题暂且不说,只说说所有c++程序员都应该避免的错误。如果你是一个三年经验的c++ coder,不妨对比看一看,如果自己身上出现了这些问题,还真要好好反思反思了。如果你是一个c++ leader,而你手下的三年经验的小伙伴恰好有出现这些错误的,那你应该考虑是不是应该让他领盒饭了,或者委婉点把这篇文章转给他看看吧原创 2017-07-12 20:47:47 · 2875 阅读 · 0 评论 -
记C++坑:2.局部变量的申明方式
最近有同事问,没什么他写的下面这段代码会报错:int cls::getmapvalwithlock(int key, std::mutex& lock){ std::unique_lock(lock); return m_map[key];}错误原因是变量lock重定义。然后他将代码改成int cls::getmapvalwithlock(int key, std::mutex&原创 2017-02-15 11:32:01 · 1047 阅读 · 0 评论 -
记C++坑:1.被自己坑了一次的全局变量使用
最近遇到一个问题,打算写一个小的测试程序来测试一下自己设计的算法方案。当时也没考虑就用了全局变量。当时的代码是这样写的:int intarray[] = {1,10,100,1000};int CreateArray(int* arrayname){ arrayname = new int[4]; memccpy(arrayname,intarray,sizeof原创 2016-12-15 10:24:31 · 2580 阅读 · 1 评论 -
8大排序
代码:ArrayDefine.h#pragma once#include #define ARRAYLEN 1000000int InitArray(int* arrayname){ FILE* f = fopen("data.dat","rb");//文件中有1000000个整数 int b = fread(arrayname,sizeof(int),AR原创 2016-12-15 15:48:54 · 324 阅读 · 0 评论 -
c++如何构造一个递增的vector数组
原生数组和vector、array都不支持构造一个递增的数组,比如一个包含0~999的size为1000的数组。传统的方式是:int ids[COUNT] = {};for (int i = 0; i < COUNT; ++i){ ids[i] = i;}或std::vector<int> ids;ids.resize(COUNT);for (i...原创 2018-09-27 10:43:42 · 7658 阅读 · 6 评论