自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

转载 C++ 中的string类型的变量占几个字节

本篇文章小编并不是为大家讲解string类型的用法,而是讲解我个人比较好奇的问题,就是string 类型占几个字节在C语言中我们操作字符串肯定用到的是指针或者数组,这样相对来说对字符串的处理还是比较麻烦的,好在C++中提供了 string 类型的支持,让我们在处理字符串时方便了许多、首先,我写了一段测试代码,如下所示:复制代码代码如下:#includ

2017-09-17 17:02:00 2545

转载 【C++】int转换为string的两种方法(to_string、字符串流)

记录一下用到过的int转换成string的两种方法第一种是to_string函数,这是C++11新增的,使用非常方便,简单查了下:C++11标准增加了全局函数std::to_string,以及std::stoi/stol/stoll等等函数(这几个就是string转int,long,以及long long啦~)to_string这个函数还是很强大的!string to_stri

2017-09-08 09:47:16 882

转载 C++ 的map操作

Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数;   mapmapstring;         mapmapint;   mapmapstring;         mapmapchar;   mapmapchar;            mapmapint

2017-09-01 11:13:52 442

原创 list中的erase和remove

erase的作用是,使作为参数的迭代器失效,并返回指向该迭代器下一参数的迭代器。如下:[cpp] view plain copyprint?list ParticleSystem;    list::iterator pointer;    if(pointer->dead == true)  {     pointer = ParticleSyst

2017-08-16 09:06:35 520

转载 N个数依次入栈,出栈顺序有多少种

1.基于栈的问题分析我们把n个元素的出栈个数的记为f(n), 那么对于1,2,3, 我们很容易得出:                                 f(1) = 1    //即 1                                    f(2) = 2    //即 12、21                         

2017-08-14 21:48:21 4848

转载 KMP算法

kmp算法又称“看毛片”算法,是一个效率非常高的字符串匹配算法。不过由于其难以理解,所以在很长的一段时间内一直没有搞懂。虽然网上有很多资料,但是鲜见好的博客能简单明了地将其讲清楚。在此,综合网上比较好的几个博客(参见最后),尽自己的努力争取将kmp算法思想和实现讲清楚。kmp算法完成的任务是:给定两个字符串O和f,长度分别为n和m,判断f是否在O中出现,如果出现则返回出现的位置。常规方法是遍历

2017-08-14 09:57:39 309

原创 算法复杂度对数阶O(logn)详解

下面的这段代码,时间复杂度是多少呢?int count = 1;while(count < n){ count = coint*2; //时间复杂度O(1)的程序步骤序列 ......}由于每次count成衣2之后,就距离n更近了一分。也就是说,有多少个2相乘后大于n,则会退出循环。由2^x=n 得到x=logn。所以这个循环的时间复杂度为O(log

2017-08-13 16:25:20 19837 11

原创 算法复杂度O(nlogn)详解

首先看以下程序段:for(int i=1;i{          for(int j=1;j           {                   .....   //复杂度为O(1);            }}求该程序段的时间复杂度。可以看出:(1)当i=1时,需要执行n次;                     (2)当i=2时,需要执行n/2

2017-08-13 16:15:56 29955 13

转载 malloc 背后的系统知识

malloc 背后的系统知识2017/03/28 · IT技术 · malloc,内存管理, 操作系统 分享到:3本文作者: 伯乐在线 - legendtkl 。未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者。面试的时候经常会被问到 malloc 的实现。从操作系统层面来说,malloc 确实是考察面试者对操作系统底层的存储管理理

2017-08-07 19:55:43 451

转载 C++之编译器与链接器工作原理

原文来自:http://blog.sina.com.cn/s/blog_5f8817250100i3oz.html 这里并没不是讨论大学课程中所学的《编译原理》,只是写一些我自己对C++编译器及链接器的工作原理的理解和看法吧,以我的水平,还达不到讲解编译原理(这个很复杂,大学时几乎没学明白)。要明白的几个概念:    1、编译:编译器对源文件进行编译,就是把源文件中的文本形式存在的

2017-08-04 16:16:22 361

转载 C++标准库和标准模板库

C++强大的功能来源于其丰富的类库及库函数资源。C++标准库的内容总共在50个标准头文件中定义。在C++开发中,要尽可能地利用标准库完成。这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢;(2)质量:标准库的都是经过严格测试的,正确性有保证;(3)效率:关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大牛们的水平;(4)良好的编程风格:采用行业

2017-08-04 15:53:06 431

翻译 (一)SDT(Signal dependent transform)

译者注: 本文译自提案JVET-D1001的2.4.3小节的内容。 提案作者的文章: Exploiting Non-Local Correlation via Signal-Dependent Transform (SDT), IEEE JOURNAL OF SELECTED TOPICS IN SIGNAL PROCESSING, VOL. 5, NO. 7, NOVEMBER 20

2017-08-02 17:08:21 504

原创 C++正则表达式

正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex、regexp、RE、regexps、regexes、regexen。         正则表达式是一种文本模式。正则表达式是强大、便捷、高效的文本处理工具。正则表达式本身,加上如同一门袖珍编程语言的通用模式表示法(general pattern notation),赋予使用者描述和

2017-08-02 17:03:49 622

原创 C++ lambda 表达式

lambda表达式是C++11最重要也最常用的一个特性之一。lambda来源于函数式编程的概念,也是现代编程语言的一个特点。 一.函数式编程简介定义:简单说,“函数式编程”是一种“编程范式”。它属于“结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。 特点:1).函数是“第一等公民”,可以赋值给他其他变量,也可以做为参数,返回值。

2017-07-28 22:02:15 458

原创 (五)工厂方法模式

GOOD:修正了简单工厂模式中不遵守开放-封闭原则。工厂方法模式把选择判断移到了客户端去实现,如果想添加新功能就不用修改原来的类,直接修改客户端即可。#include#includeusing namespacestd;//实例基类,相当于Product(为了方便,没用抽象)class LeiFeng{public:       virtual void Sweep

2017-07-28 10:20:34 246

原创 (四)代理模式

好处:远程代理,可以隐藏一个对象在不同地址空间的事实    虚拟代理:通过代理来存放需要很长时间实例化的对象    安全代理:用来控制真实对象的访问权限    智能引用:当调用真实对象时,代理处理另外一些事例:#include#includeusing namespacestd;//定义接口class Interface{public:     

2017-07-28 10:13:56 231

转载 C++ 智能指针详解

C++ 智能指针详解 一、简介由于 C++语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scop

2017-07-27 21:35:35 277

转载 C++的顶层const和底层const的理解

最近,又一次翻开C++primer,决定仔细研究一下自己以前没搞懂的顶层const和底层const,这次看了后感觉明白了,所以记录下来,以后可以没事翻阅,增加记忆。首先,const是一个限定符,被它修饰的变量的值不能改变。对于一般的变量来说,其实没有顶层const和底层const的区别,而只有向指针这类复合类型的基本变量,才有这样的区别。 一 如何区分顶层const和底层const指针如果

2017-07-27 15:35:54 320

转载 C++中智能指针的设计和使用

转载请标明出处,原文地址:http://blog.youkuaiyun.com/hackbuteer1/article/details/7561235     智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对

2017-07-27 11:04:23 321

原创 (三)装饰模式

动态地给一个对象添加一些额外的职责(不重要的功能,只是偶然一次要执行),就增加功能来说,装饰模式比生成子类更为灵活。建造过程不稳定,按正确的顺序串联起来进行控制。GOOD:当你向旧的类中添加新代码时,一般是为了添加核心职责或主要行为。而当需要加入的仅仅是一些特定情况下才会执行的特定的功能时(简单点就是不是核心应用的功能),就会增加类的复杂度。装饰模式就是把要添加的附加功能分别放在单独的类中

2017-07-20 11:06:21 224

原创 (二)策略模式

定义算法家族,分别封装起来,让它们之间可以互相替换,让算法变化,不会影响到用户  GOOD:适合类中的成员以方法为主,算法经常变动;简化了单元测试(因为每个算法都有自己的类,可以通过自己的接口单独测试。  策略模式和简单工厂基本相同,但简单工厂模式只能解决对象创建问题,对于经常变动的算法应使用策略模式。  BUG:客户端要做出判断例//策略基类class COp

2017-07-20 10:13:39 220

原创 (一)简单工厂模式

主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。GOOD:适用于不同情况创建不同的类时BUG:客户端必须要知道基类和工厂类,耦合性差(工厂类与基类为关联关系)例://基类class COperation{public:       int m_n

2017-07-20 10:07:42 231

转载 C++静态成员变量和静态成员函数的使用方法总结

一.静态成员变量:类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点:1.静态数据成员的定义。静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。其定义方式与全局变量相同。举例如

2017-07-20 09:14:33 723

转载 二叉查找树的插入和删除详解

二叉查找树是如下定义的:(1)  左子树不空,则左子树上的所有结点的值均小于根结点的值(2)  右子树不空,则右子树上的所有结点的值均大于根结点的值二叉查找树可以为空,二叉查找树是递归定义的,也就是说其左右子树也为二叉查找树。二叉查找树是一种动态查找表,可以进行动态地插入和删除。前面的定义中我们假定二叉查找树不含有相同元素。由定义可知二叉查找树的中序序列为一个递增序列常见的

2017-07-19 11:17:59 389

转载 二叉查找树的插入和删除详解

二叉查找树是如下定义的:(1)  左子树不空,则左子树上的所有结点的值均小于根结点的值(2)  右子树不空,则右子树上的所有结点的值均大于根结点的值二叉查找树可以为空,二叉查找树是递归定义的,也就是说其左右子树也为二叉查找树。二叉查找树是一种动态查找表,可以进行动态地插入和删除。前面的定义中我们假定二叉查找树不含有相同元素。由定义可知二叉查找树的中序序列为一个递增序列常见的

2017-07-19 11:16:09 588

转载 数据结构:单源最短路径--Dijkstra算法

Dijkstra算法单源最短路径    给定一带权图,图中每条边的权值是非负的,代表着两顶点之间的距离。指定图中的一顶点为源点,找出源点到其它顶点的最短路径和其长度的问题,即是单源最短路径问题。Dijkstra算法    求解单源最短路径问题的常用方法是Dijkstra(迪杰斯特拉)算法。该算法使用的是贪心策略:每次都找出剩余顶点中与源点距离最近的一个顶点。算法思想   

2017-07-15 15:03:15 563

转载 数据结构:点对之间最短距离--Floyd算法

Floyd算法Floyd算法    Dijkstra算法是用于解决单源最短路径问题的,Floyd算法则是解决点对之间最短路径问题的。Floyd算法的设计策略是动态规划,而Dijkstra采取的是贪心策略。当然,贪心算法就是动态规划的特例。算法思想    点对之间的最短路径只会有两种情况:两点之间有边相连,weight(Vi,Vj)即是最小的。通过另一点:中介点,两点相连

2017-07-15 15:01:25 579

转载 数据结构:最小生成树--Prim算法

最小生成树:Prim算法最小生成树    给定一无向带权图,顶点数是n,要使图连通只需n-1条边,若这n-1条边的权值和最小,则称有这n个顶点和n-1条边构成了图的最小生成树(minimum-cost spanning tree)。Prim算法    Prim算法是解决最小生成树的常用算法。它采取贪心策略,从指定的顶点开始寻找最小权值的邻接点。图G=,初始时S={V0},把与V0相

2017-07-15 14:57:29 570

转载 数据结构:最小生成树--Kruskal算法

数据结构:最小生成树--Kruskal算法标签: Kruskal算法图并查集kruskal数据结构2014-08-07 11:45 2308人阅读 评论(1)收藏举报分类: 数据结构与算法(49) 作者同类文章X版权声明:本文为博主原创文章,转载,请注明出处。若是商业用途,请事先联系作者。

2017-07-15 14:54:02 650

转载 最小生成树-Prim算法和Kruskal算法

最小生成树-Prim算法和Kruskal算法 Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch

2017-07-15 14:41:39 434

转载 综合面试(hr面)常问的问题

面试了一些大大小小的公司、企业,在综面马失前蹄实在令人心痛惋惜!总结综面的一些常见问题不外乎这几个,但是要回答好,却也并不容易。1.首先,开场白是自我介绍。    也许面试官在你之前已经问了n多位同学的自我介绍了,所以此时你的自我介绍别陷入老套,比如从叫什么名字(简历上本来就有),来自什么学校什么的,这会一开始让面试官失去兴趣,记得当初面试华为时,已是快中午十二点了,面试官

2017-07-12 11:19:30 32495 1

原创 函数模板与函数重载

函数模板遇上函数重载时:1、 函数模板可以像普通函数一样被重载2、 C++编译器优先考虑普通函数3、 如果函数模板可以产生一个更好的匹配,那么选择模板4、 可以通过空模板实参列表的语法限定编译器只通过模板匹配特别需要注意的是:函数模板不允许自动类型转化普通函数能够进行自动类型转换/*普通函数*/int Max(int a, int b){cout

2017-06-25 21:30:27 680

转载 C++面试常见题目问与答(汇总一)

[置顶] C++面试常见题目问与答(汇总一)标签: C++面试笔试2015-08-22 13:31 6450人阅读 评论(3)收藏举报本文章已收录于:分类: 面试题(1) 作者同类文章XC++(22) 作者同类文章X笔试题(2) 作者同类文章X

2017-06-20 09:50:38 1136

原创 函数指针

函数指针语法:函数名称就代表函数的入口地址 函数名称本身就是一个指针,可以把函数名赋给一个函数指针,通过函数指针进行函数调用。值得注意的是:函数名和对函数名取地址是一样的。C语言通过typedef为函数类型重命名,函数指针的3种定义方式:1、用函数类型 定义一个函数指针//定义一个函数类型 typedef int Func(int);int test(int a){

2017-06-18 17:15:26 376

转载 纯虚函数与抽象类

1、纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本;2、纯虚函数为各派生类提供一个公共界面(接口的封装设计);3、纯虚函数说明形式:virtual  类型   函数名(参数表)= 0 ;4、一个具有纯虚函数的基类称为抽象类。注:(1)绝大多数面向对象语言都不支持多继承;(2)绝大多数面向对象语言都支持接口的概念;(3)C++中没

2017-06-18 11:04:36 327

原创 父类构造函数不能实现多态

class AA{public:AA(int a= 0){this->a = a;print(); //在构造函数里面能实现多态吗?}virtual void print(){cout}protected:int a ;};class BB : public AA{public:BB(int a= 0, int b

2017-06-17 21:14:07 498

转载 C++编译器多态实现原理

1、 多态基础(1)多态的实现效果 多态:同样的调用语句有多种不同的表现形态;(2)多态实现的三个条件 有继承、有virtual重写、有父类指针(引用)指向子类对象。(3)多态的C++实现 virtual关键字,告诉编译器这个函数要支持多态;不要根据指针类型判断如何调用;而是要根据指针所指向的实际对象类型来判断如何调用(4)多态的理论基础   动态联编PK静态联编。

2017-06-16 17:05:43 794

原创 C++类的函数重载和函数重写探究

1.首先介绍函数三要素,函数重载,函数重写的概念 .   函数三要素:函数名,返回类型,函数参数。 .   函数重载:两个函数的函数名相同,函数参数不同,函数体不同。.    函数重写:函数名,返回类型,函数参数都必须相同,但函数体可以实现不同功能。2.C++类的函数重载(1)必须在同一个类中进行;(2)子类无法重载父类的函数,父类同名函数将被名称覆盖;(3

2017-06-16 16:15:30 417

原创 C++ 多态问题详解

C++ 多态问题详解 一、多态问题的产生 class parent{public:parent(int a=0){this->a =a;}void print(){cout "父类a:" aendl;}protected:private:int a;}; class child :publi

2017-06-10 16:58:45 333

转载 c++字符串

C++支持两种字符串:C风格字符串和string。之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。此外,CStr

2017-05-29 18:26:45 222

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除