
C-C++
悟空很开心
幸福来敲门
展开
-
C++的三种继承方式
公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。 私有继承(private) 私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且原创 2016-04-20 09:44:36 · 467 阅读 · 0 评论 -
设计模式:strategy
//税务计算 enum TaxBase{ US_Tax, CN_Tax, DE_Tax, JAP_Tax //更改 新增 };class strage{ TaxBase tax;public: double calculate_tax(){ if(tax == US_Tax){ //......原创 2016-08-18 21:26:57 · 290 阅读 · 0 评论 -
C++ STL算法的完美应用
请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。不错的解法:bool checkDifferent(string iniString){ const cha原创 2016-08-22 15:21:34 · 382 阅读 · 0 评论 -
字符串类型题目
#pragma once#include <string>#include <vector>#include <stack>using namespace std;class newcoder_string {public: /************************************************************************/ /原创 2016-08-10 18:32:13 · 370 阅读 · 0 评论 -
muduo网络库:单例设计
相对于传统的double checkd locking(DCL),其实也是靠不住的~~ 具体原因参考下面的文章: http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html陈硕的解法的利用Pthreads库中的pthread_once. 函数原型:int pthread_once(pthread_once_t *原创 2016-08-23 19:05:25 · 513 阅读 · 0 评论 -
C++ 实现高性能内存池
一、概述 在 C/C++ 中,内存管理是一个非常棘手的问题,我们在编写一个程序的时候几乎不可避免的要遇到内存的分配逻辑,这时候随之而来的有这样一些问题:是否有足够的内存可供分配? 分配失败了怎么办? 如何管理自身的内存使用情况? 等等一系列问题。在一个高可用的软件中,如果我们仅仅单纯的向操作系统去申请内存,当出现内存不足时就退出软件,是明显不合理的。正确的思路应该是在内存不足的时,考虑如何管理并优原创 2016-08-24 16:56:18 · 33922 阅读 · 12 评论 -
剑指Offer :寻找链表中倒数第K个节点
struct ListNode{ int val; ListNode* next;};//寻找倒数第K个节点ListNode* FindKthToTail(ListNode* pListHead,unsigned int k){ if(pListHead == NULL || K <= 0){ return NULL; } ListNode原创 2016-08-25 11:28:22 · 330 阅读 · 0 评论 -
剑指Offer:调整数组中的数据
题目是:输入一个整数数组,实现一个函数来调整数组中的数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组后半部分。bool isEven(int n){ return (n & 1) == 0; }void Reorder(int *pData,unsigned int length,bool (*func)(int)){ if(pData == NULL || lengt原创 2016-08-25 11:32:50 · 334 阅读 · 0 评论 -
归并排序(c++实现)
#include <iostream> using namespace std; template <class T> void MSort(T a[], int left, int right) { if (left < right) { int center = (left + right) / 2;//取得中点原创 2016-08-25 19:14:29 · 376 阅读 · 0 评论 -
memcpy()和memmove()
1、实现memcpy函数 已知memcpy的函数为: void* memcpy(void* dest , const void* src , size_t count)其中dest是目的指针,src是源指针。不调用c++/c的memcpy库函数,请编写memcpy。 分析:参考代码如下:void* memcpy(void *dst, const void *src, size_t count)原创 2016-08-27 09:35:30 · 538 阅读 · 0 评论 -
剑指Offer:二叉搜索树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。class Solution { bool judge(vector<int>& a, int l, int r){ if(l >= r) return true; int i = r; while(原创 2016-09-07 08:59:40 · 335 阅读 · 0 评论 -
设计模式:template method
class Library{protected: virtual ~Library(){} bool step1(){ //稳定 //... } bool step2(){//稳定 //... } virtual bool step3() = 0;//变化 bool step4(){//稳定原创 2016-08-18 20:37:36 · 304 阅读 · 0 评论 -
STL中string的搜索操作
string类提供了6个不同的搜索函数。每个函数有4个重载版本。每个搜索操作都返回一个string::size_type值,表示匹配发生位置的值。如果搜索失败,则返回一个string::npos的static 成员。标准库将npos定义为一个const string::size_type 类型,并初始化为值-1。(1)find()函数 string name("AnnaBelle");原创 2016-08-18 10:21:08 · 1005 阅读 · 0 评论 -
STL中的vector与list插入数据速度比较
对于忘list中插入数据,很好理解,分配一个新的结点空间,添加到链表尾部即可;对于往vectorz中添加数据,需要判断当前控件是否够用,不够用的话需要再次分配稍大的一些空间,然后把已有的元素拷贝到新的空间区域,然后释放已有的空间。也许有人觉得这个拷贝操作很费时,觉得没有list添加的速度快,然而,事实并不是这样…..#include <iostream>#include <time.h> #in原创 2016-08-18 09:58:56 · 5198 阅读 · 1 评论 -
C++指针详解
原文:http://www.cnblogs.com/ggjucheng/archive/2011/12/13/2286391.html 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 …………………………. 详转载 2016-04-20 16:05:25 · 275 阅读 · 0 评论 -
C++之模板与泛型编程(上):函数模板
面向对象编程(OOP)和泛型编程都能处理在编写程序时不知道类型的情况。不同之处在于:OOP能处理类型在程序运行之前都未知的情况,而在泛型编程中,在编译时就能获知类型了。模板是C++中泛型编程的基础,一个模板就是一个创建类或者函数的蓝图或者说公式。1. 定义模板 比如说要写一个比较两数字大小的函数,由于数字类型可能不同,int 或者float等等,这是除了我们使用重载之外,使用模板会带来更原创 2016-04-22 16:56:44 · 493 阅读 · 0 评论 -
C++之模板与泛型编程(下):类模板
在上一篇中,我们提到了函数模板,本文将来讲述一下类模板(class template)。 类模板是用来生成类的蓝图的。与函数模板不同的是,编译器不能为类模板推断模板参数类型。如我们在使用类的模板时,必须在模板名后的尖括号里提供额外的信息,用来代替模板参数的模板实参列表。1.定义类模板 类似函数模板,类模板以关键字template开始,后跟模板参数列表。在类模板(以及成员)的定义中,我们将模板参数原创 2016-04-24 08:30:51 · 355 阅读 · 0 评论 -
使用C++ 11特性写一个简单的线程池
#ifndef THREAD_POOL_H#define THREAD_POOL_H#include <vector>#include <queue>#include <memory>#include <thread>#include <mutex>#include <condition_variable>#include <future>#include <functional>原创 2016-07-25 10:51:02 · 1631 阅读 · 1 评论 -
图的深度优先搜索和广度优先搜索
图见下: c++代码:对矩阵的操作比较简单,现在将矩阵转化成邻接链表: #include <iostream>#include <queue>#include <stack>using namespace std;//0:表示不连通 //1:表示连通 //无自环路 const int graph_arr[11][11] = { {0,1,0,0,0,0,1,0,0,1,1原创 2016-07-26 16:42:36 · 348 阅读 · 0 评论 -
剑指OFFER:二维数组中的查找
T3:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。const int martix[][4] = { {1,2,8,9}, {2,4,9,12}, {4,7,10,13}, {6,8,11,15}};static bool find_numb原创 2016-07-27 09:43:40 · 319 阅读 · 0 评论 -
链表:增加结点与删除节点
#include <iostream>using namespace std; struct ListNode{ int value; ListNode* next;};void add_to_tail(ListNode** pHead,int value){ //由于会改变头指针,因此必须把pHead参数设为指向指针的指针, //否则除了这个函数pHead仍然是原创 2016-07-28 09:02:21 · 463 阅读 · 0 评论 -
最短路Dijkstra算法
#include <iostream>#include <stack>using namespace std;const int MAX = 65535;const int graph[9][9] = {//v: 0 1 2 3 4 5 6 7 8 V: { 0, 1, 5,MAX,MAX,MAX,MAX,MAX,MAX}, //0原创 2016-08-02 14:08:28 · 322 阅读 · 0 评论 -
二叉树的三种遍历六种实现
#include <iostream> #include <stack>using namespace std;struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), rig原创 2016-08-02 16:50:59 · 1460 阅读 · 0 评论 -
常见排序算法总结-C++实现
#include <iostream>using namespace std; int arr[] = {2,3,1,5,4,6,8,7,9,10};void print(int *arr,int len){ for(int i=0;i<len;i++){ cout<<arr[i]<<" "; } cout<<endl;} //冒泡-升序排列 void原创 2016-08-06 11:10:34 · 376 阅读 · 0 评论 -
c++反射
http://blog.youkuaiyun.com/scythe666/article/details/51718864转载 2017-10-28 11:28:27 · 317 阅读 · 0 评论