
C++
文章平均质量分 54
洞之蝉
真正想做的人总是什么也不说,扭头就去做了。
展开
-
gmock
C++单元测试工具,现在市面上有很多并且不少都是免费开源的,这次要介绍的是gmock,来自大名鼎鼎的Google,gmock是包含了gtest的一个单元测试框架,在gtest基础上增加了许多便于开发人员进行mock打桩的接口等,可以理解为gtest负责进行测试,gmock负责测试前的打桩,gmock比起其他的cppunit等测试工具来说,最大的优点就是可以有简单的内置宏来定义一个类的mock类进行打桩,这为C++类单元测试带来了极大的便利。【编译gmock】解压缩gmock-1.7.0.zip,转载 2022-05-06 16:04:28 · 5736 阅读 · 0 评论 -
vscode修改spaces不生效
1. 修改spaces为42. 执行快捷键 shift + option +F原创 2021-04-08 20:10:59 · 773 阅读 · 0 评论 -
Cuckoo Hashing的应用及性能优化
简介:Cuckoo Hash Table 使用了两个哈希函数来解决冲突。Cuckoo查询操作的理论复杂度为最差O(1),而Cuckoo的插入复杂度为均摊O(1)。我们引入Cuckoo是希望它在实际应用中,能够在较高的空间利用率下,仍然维持不错的查询性能。written by 钦诚,祯祺Cuckoo Hashing 的引入在indexlib的底层,需要一个高性能的Key/Value引擎来提供类似python Dict/ Java HashMap/ C++ unordered map(这些数据结构.转载 2020-12-07 20:14:36 · 1627 阅读 · 1 评论 -
xcrun: error: invalid active developer path (/Applications/Xcode.app/Contents/Developer), missing xc
xcrun: error: invalid active developer path (/Applications/Xcode.app/Contents/Developer), missing xc解决方案:使用这个sudo xcode-select -switch /原创 2020-11-13 14:54:04 · 491 阅读 · 0 评论 -
The C++ Standard Library : A Tutoral and Reference 读书笔记之auto_ptr
这一部分会将要讨论一下auto_ptr.c++标准库提供auto_ptr作为一种智能指针,有了这种智能指针,就可以在异常被抛出的时候避免资源的泄漏.注意,auto_ptr只是智能指针的一种.因为事实上有多种智能指针存在.而auto_ptr只是被用来满足某种情形下的需求的.而对于其他一些情形,auto_ptr无能为力.所以在使用的时候 要格外注意. auto_ptr的动机转载 2014-08-17 20:38:12 · 561 阅读 · 0 评论 -
c++代码命名规范
一、命名的两个基本原则1、含义清晰,不易混淆;2、不和其它模块、系统API的命名空间相冲突。二、命名通则1、在所有命名中,都应使用标准的英文单词或缩写;不得使用拼音或拼音缩写,除非该名字描述的是文特有的内容(如半角、全角、声母、韵母等);除非必要,不要用数字或较奇怪的字符来定义标识符。2、所有命名都应遵循达意原则,即名称应含义清晰、明确。3、所有命名都不易过长,应控转载 2014-08-31 17:06:44 · 866 阅读 · 0 评论 -
C++ 虚函数表解析
C++ 虚函数表解析 陈皓http://blog.youkuaiyun.com/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R转载 2014-08-18 16:02:44 · 406 阅读 · 0 评论 -
【c++primer】第八章01——标准IO库
编写一个函数,其唯一的//get.cpp//自定义的get实现文件、源文件#include"stdafx.h"#include"get.hpp"//std::istream & get(std::istream & in){ int ival; while(in >> ival,!in.eof()) { if(in.bad())//如果出现系统故障,抛原创 2014-09-04 07:54:28 · 474 阅读 · 0 评论 -
编程细节的考虑——卓越的教练是如何训练高手的?
编者按:我们知道,优秀的运动员除了自身的天赋和努力之外,出色的教练必不可少。一个成功的企业除了拥有出类拔萃的员工之外,同样需要一位出色的教练,那就是企业的CEO。由此可见,如果我们要想成为一位优秀的程序员,毫无疑问卓越的教练是致关重要的。无数事实告诉我们,成功者之所以成功,是因为成功地选择导师的缘故。 周立功公司之所以在一定程度上取得了一些成功,绝对不是运气所为,除了不断努力选拔优秀转载 2014-09-10 08:43:01 · 638 阅读 · 0 评论 -
栈帧
http://blog.youkuaiyun.com/zhongguoren666/article/details/7586074首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(地址地)。下图为典型的存取器安排,观察栈在其中的位置转载 2014-08-26 08:31:13 · 627 阅读 · 0 评论 -
【c++】计时函数
C++ clock()函数主要是帮助我们实现计时的功能原创 2014-08-12 20:04:04 · 607 阅读 · 0 评论 -
【c++】——sizeof与字节对齐
结构体字节对齐 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列,而不是简单地顺序排列,这就是内存对齐。 内存对齐的原因:转载 2014-08-13 15:55:50 · 841 阅读 · 0 评论 -
【c++】指针与引用
http://blog.youkuaiyun.com/xdrt81y/article/details/18004129温故而知新,指针和引用的概念,大学时都已熟知,实际用的时候往往又有些疑惑,故深入探究一下。从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在转载 2014-08-13 21:07:30 · 352 阅读 · 0 评论 -
STL——multimap
/* * ******************************************** * multimap多重映照容器的基础说明: ******************************************** * * multimap多重映照容器:容器的数据结构采用红黑树进行管理 * multimap的所有元素都是pair:第一元素为键值(k转载 2014-09-09 15:08:40 · 439 阅读 · 0 评论 -
【c++】关于函数指针和指针函数——大众点评二面
1.指针函数就是函数返回值是一个原创 2014-10-06 16:25:52 · 556 阅读 · 0 评论 -
指针数组和数组指针
一、指针数组int *原创 2014-10-06 18:13:02 · 388 阅读 · 0 评论 -
【c++】内存偏移、成员函数和成员变量、static成员函数、变量
创建类的实例时,类的内存中原创 2014-10-06 15:28:12 · 1108 阅读 · 0 评论 -
macOS 下使用 gcc 而非 clang
转自:https://wwyqianqian.github.io/2019/05/06/real-gcc/今天编译一段带有#include <bits/stdc++.h>这样一个头文件的 c++ 代码时,遇到了报错 1 2 3 4 5 fatal error: 'b...转载 2019-06-14 17:46:29 · 8151 阅读 · 0 评论 -
Protobuf在Mac上使用
转自:http://tangsanzang.tk/2018/12/26/protobufcppmac/#Protobuf在Mac上使用要在mac上使用protobuf,并用在xcode中 需要做如下操作1、安装github地址:https://github.com/protocolbuffers/protobuf下载cpp版本 1 wget...转载 2019-06-14 16:04:48 · 2952 阅读 · 0 评论 -
大小端问题
/********************************************************************* 题目:字符串是否包含问题 两个字符串,看str2在不在str1中 思路:采用哈希表或者位图 **********************************************************************/ #原创 2014-09-10 20:30:02 · 453 阅读 · 0 评论 -
关联容器
题目:输入一个链表的头结点,从尾到头反过来打印出每个节点的值分析:可以有两种方法1.原创 2014-08-05 16:08:00 · 537 阅读 · 0 评论 -
程序员的自我修养总结(一)
思路:原创 2014-09-08 21:54:13 · 671 阅读 · 1 评论 -
【C++ Primer】函数参数传递总结
5.面试题31——连续子数组的最大和原创 2014-08-05 14:43:08 · 671 阅读 · 0 评论 -
【C++ Primer】数组和指针总结
剑指offer 面试题29原创 2014-08-05 14:18:19 · 642 阅读 · 0 评论 -
【c++Primer】第二章掌握C++总结
题目分析:原创 2014-08-05 13:56:15 · 631 阅读 · 0 评论 -
【c++】虚函数对对象大小的影响
#include "stdafx.h"#includeusing namespace std;class Base{public: virtual void fun1(){}};class Derived1: public Base{public: char a[3];};class Derived2: public Base{public: virtual v原创 2014-09-08 18:07:12 · 968 阅读 · 0 评论 -
递归
1.统计字符串中'\0'前的字符数原创 2014-10-06 19:54:33 · 500 阅读 · 0 评论 -
【c++primer——】第13章复制控制——01深入理解复制构造函数
13. 理解复制控制成员和构造函数的一个良好方式是定义一个简单类,该类具有这些成员,每个成员打印自己的字: struct Exmp1 { Exmp1() { std::cout 编写一个像Exmp1这样的类,给出复制控制成员和其他构造函数。然后写一个程序,用不同方式使用Exmp1类型的对象:作为非引用和引用形参传递,动态分配,放在容器中,等等,研究何时执行哪个构造函数和复制控制成员,可以帮原创 2014-08-12 07:41:44 · 449 阅读 · 0 评论 -
【c语言陷阱——01】——二维数组模拟
从前面的讨论中,我们不难得出一个推论,*a即数组a中下标为0的元素的引用。例如,我们可以这样写:1*a=84;这个语句将数组a中下标为0的元素的值设置为84.同样道理,*(a+1)数组a中下标为1的的元素的引用,以此类推,概而言之,*(a+i)即数组中下标为i的元素的引用,这种写法是如此常用,因此被简记为a[i].正是原创 2014-08-09 19:52:38 · 410 阅读 · 0 评论 -
C++模板
C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型不同的类。 使用模板的目的就是能够让程序转载 2014-07-08 22:08:01 · 351 阅读 · 0 评论 -
【c++primer】第十六章:模板与泛型编程
编写函数模板,接受一个ostream引用和一个值,将该值写入流。用至少四种原创 2014-07-20 08:34:19 · 429 阅读 · 0 评论 -
[1]【C++Primer】第七章 函数
1.调用函数的指针形参,指针不能改变,但指针所指向的值会改变。原创 2014-07-07 21:29:31 · 350 阅读 · 0 评论 -
【c++——STL】标准模板库STL中优先队列Priority Queues使用手册
转自博客:优先队列容器默认使用向量容器实现,用户也可以使用双端队列容器。优先队列总是把优先级最高的元素放在队列的最前方,来保持队列的有序性。插入操作push()使用一个双变量的布尔函数,将队列中的元素重新排序,以满足这个要求。该函数可以由用户提供,否则可以使用如果元素越小,优先级越高,则需要使用函数对象greater,表明在决定向优先级队列中转载 2014-07-17 16:12:35 · 816 阅读 · 0 评论 -
020 栈适配器的操作:
http://keyknight.blog.163.com/blog/static/366378402009120115435657/020 栈适配器的操作: s.empty() 如果栈为空, 则返回true , 否则返回false . s.size() 返回栈中元素的个数.转载 2013-11-12 16:40:47 · 539 阅读 · 0 评论 -
C++的访问标号
C++的访问标号有三种,跟C#一样.用法也差不多.很容易理解. 比较特色的是:默认的Class的成员都是private的,而C#里面默认是public的.跟C++里面的struct一样. 一般来说,都是把接口放在public那边,数据或者是一些类特有的隐蔽操作,放在private这边,--懂黑箱操作的,应该都能理解. 比较特别的是,C++里面有个fr转载 2013-11-25 15:17:57 · 988 阅读 · 0 评论 -
第一章——编译器工作的主要流程
编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) →源代码就是人类可读的按程序设计语言编写的代码预处理器 (preprocessor)→ 编译开始之前由编译器调用的独立程序。预处理器可以删除注释、包含其他文件以及执行宏(宏macro是一段重复文字的简短描写)替代编译器 (compiler)→将原创 2013-11-21 16:52:31 · 1089 阅读 · 0 评论 -
rand和srand的用法
首先我们要对rand和srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。rand(产生随机数)表头文件: #include定义函数: int rand(void)函数说明 : 因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值转载 2013-10-11 21:37:46 · 606 阅读 · 0 评论 -
dos窗口一闪而过处理办法
这个错误,老师出现过,现在我也出现这个问题了,整理以供大家参考,有啥好的方法,大家可以留言,相互交流~~~在vs2010中,新建win32程序,运行时出现这样的现象:DOS窗口一闪而过,想查看输出内容,很纠结,但是看不到!现整理下自己测试过的方法: 1)在main()函数的末尾return 0前加一个 system("pause");转载 2013-10-11 22:33:25 · 6586 阅读 · 0 评论 -
ANSI与UniCode的区别
ANSI与UniCode的区别什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。目前,在网络、Window转载 2013-10-11 21:01:59 · 2080 阅读 · 0 评论 -
静态类型语言、动态类型语言、强类型语言、弱类型语言【转】
动态语言,准确地说,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。静态类型定义语言 一种在编译时,数据类型是固定的语言。大多数静态类型定义语言强制这一 点,它要求你在使用所转载 2013-09-23 20:53:29 · 480 阅读 · 0 评论