C++
帅东
当我回忆往事的时候,不会因虚度年华而悔恨,也不会因碌碌无为而羞愧
展开
-
C++如何写adaptable仿函数
关于仿函数很多博客上都有,形式很简单,用途也很多。 一句话总结:重载了()运算符的类可以称之为仿函数functor 现在写一个“比较”class MyLess{public: bool operator()(int a, int b){ return a < b; }}; 大多数人会这样写,其实这样写没有错,而且基本所有算法都可以通过 比如:class My原创 2017-12-20 19:47:17 · 413 阅读 · 0 评论 -
深入剖析C++中的三种new
new运算符 Operator new()函数 placement new 我们平时调用的new运算符底层调用的就是Operator new()函数(功能和malloc一模一样),如果是内置类型或者没有重载new运算符的自定义类型,那么将调用全局Operator new(),如果重载了将调用局部的Operator new(),如果这个类型有构造函数,new还是调用构造函数(注意调用构造原创 2017-04-23 14:52:21 · 646 阅读 · 1 评论 -
C++11里shared_ptr源码剖析
很多人不知道引用计数放在哪,昨天为止我也不知道,O(∩_∩)O哈哈~A *a = new A;shared_ptr<A> sp(a);上面代码发生了什么呢? 进入shared_ptr的构造函数template<class _Ux> explicit shared_ptr(_Ux *_Px){ _Resetp0(_Px, new _Ref_count<_Ux>(_Px));原创 2017-10-11 15:55:47 · 2439 阅读 · 0 评论 -
C++Sort函数的潜规则
#include<iostream> #include<vector> #include<algorithm> using namespace std;bool comp(int a, int b){ if (a < b){ return true; } else{ return false; }}int main(原创 2017-09-12 22:30:31 · 578 阅读 · 1 评论 -
C++虚表撞上虚继承后的内存布局
先看一个有虚表的内存布局:class K{ double a; virtual void fun();};class L : public K{ int b; virtual void fun();};//24/* +--- | +--- (base class K) 0 | | {vfptr} 8原创 2017-04-24 14:12:53 · 557 阅读 · 0 评论 -
深入剖析C++为啥有extern
大家都知道C++中有个extern关键字是用来识别C语言的,然后以C语言的形式去编译。 原因:C++里面出现了函数重载这东西,导致和C中编译函数,生成的符号不一样,所以引入了extern。 估计大家也都知道原因,但是你有尝试去看过那些符号么?—– now 带大家去 look look —–先创建一个test.cpp文件void func(){}void func(int a){}int fu原创 2017-05-30 23:18:26 · 409 阅读 · 0 评论 -
STL空间配置器之内存池技术
注释的STL代码,算是为将来复习做个小笔记吧#if 0#include<new>#define __THROW_BAD_ALLOC throw std::bad_alloc()#elif !defined(__THROW_BAD_ALLOC)#include<iostream>#define __THROW_BAD_ALLOC std::cerr<<"out of memory"<<std原创 2017-05-07 17:33:38 · 852 阅读 · 0 评论 -
C++实现简单的内存池
没有考虑线程安全,只是简单的实现了内存池 功能:第一次先申请一大片内存,然后分成小块,每次分配给应用程序这小块内存,当内存不够了又继续向系统申请一大片内存 直接晒代码MemPool.h#include <iostream>template<typename T>class MemPool{public: MemPool(){} MemPool(T data) :原创 2017-03-23 11:12:54 · 633 阅读 · 0 评论 -
2017年完美世界一道笔试题
在不同的cpp文件中用同样类实例化某个模板函数那么是会产生多个函数的定义吗?1.写两个.cpp文件和一个.h文件 test1.cpp#include "test.h"void func1(){ func<int>(1);}int main(){ return 0;}test2.cpp#include "test.h"void func2(){ func<int>(2)原创 2017-04-07 17:39:28 · 1237 阅读 · 0 评论 -
C++中4种方式把字符串和数字连接起来
以前老用Java里面的String类,用过的人都知道好舒服,连接字符串和数字只需要用一个 + 号就可以了。在这里真的想把C++中string类+号功能加强一下。希望有能力的人可以做一下,不然总是感觉string类缺点啥呢(每次都和java比 O(∩_∩)O哈哈~) 不废话了,如题直接晒代码#include <iostream>#include <string>...原创 2017-03-19 21:54:39 · 86717 阅读 · 11 评论 -
B树的插入和删除
B-Tree 翻译过来为: B树,B-树 下面代码可以直接运行,我思路还是简单,就是调代码花了好久 供大家参考#include<iostream>#include <vld.h>#include <queue>using namespace std;#define M 5 //奇数#define MAXNUM (M-1)#define MINNUM (M/2)#define Ke原创 2017-02-15 14:31:08 · 582 阅读 · 0 评论 -
根据类和返回值★产生临时量的几种情况
#include<iostream>using namespace std;typedef struct dong{ int a[4];}Dong;typedef struct dong2{ int b;}Dong2;typedef struct dong3{ int a; int b;}Dong3;class Dong4{public:原创 2016-11-27 13:30:15 · 712 阅读 · 0 评论 -
C语言模拟多态
#include <stdio.h>#include <stdlib.h>//模拟一个类Atypedef struct A{ void *vptr;//虚函数指针 //下面内容可以删掉,写上的目的:看着像一个类 int a;//成员变量 int b; void initA(A *p, int a, int b); void dong1();//虚原创 2016-11-08 13:50:15 · 538 阅读 · 0 评论 -
C++玩转虚函数表指针-在类外面调用类中私有函数
#include<iostream>using namespace std;//只要有虚函数,基类,派生类都会默认创建一个指向虚函数表的指针,表可能不一样class A{public: virtual void go1() { cout << "A go1" << endl; } virtual void go2() {原创 2016-11-04 23:26:33 · 1378 阅读 · 1 评论 -
Huffman编码
#include <iostream>using namespace std;#define MAX 100000typedef struct { int parent; int lchild; int rchild; int weight;//权值 char value;//需要编的码 char* code;}HuffmanNode;typed原创 2016-11-08 21:49:48 · 386 阅读 · 0 评论 -
STL中的hash_map使用
主要分两部分来使用hash_map 1.针对 key = int char 等内置类型 2.针对 key = 非内置类型部分源码全部来自于sgi-v2.03版 都知道要使用hashtable必须有hash函数,由于STL内核提供了如下:内置的HashFcn:struct hash<char*>struct hash<const char*>struct hash<char> struc原创 2017-11-25 11:51:02 · 1770 阅读 · 0 评论