
C++
ajioy
如果是天才,可以选择特立独行。然而我不是,独行行不通。所以讨教高手,与之切磋技术。虚心请教,不做井底之蛙。
展开
-
优秀开源项目C++高性能服务器引擎sogou/workflow学习笔记1-环境配置篇
created: 2020-11-05 11:39:27大学期间,我一直专攻C++,第一份工作也如愿找到了windows环境下的C++开发。然而,后续一直在用python/ruby/javascript,偶尔会用下QT,但是C++被尘封了很多年,这把利器有些生锈了。于是近期打算把它捡起来好好磨磨。机缘巧合之下,了解到sogou/workflow,非常喜欢,打算花几个月时间啃透,学习一下优秀团队的设计及编程思想。由于sogou/workflow项目官方没有出相应的安装配置说明,我自己摸索了很久才跑通第一.原创 2020-11-05 17:09:54 · 3242 阅读 · 3 评论 -
面试常考的C/C++知识点sizeof
#include using namespace std;struct{ short a;//short占2个字节 short b; short c; }A;class B{private: bool a;//1 int b;//4 bool c;//1 };class C{private: int a;//原创 2012-04-18 19:31:30 · 833 阅读 · 0 评论 -
教你如何用C++快速生成1000万个随机数
updated: 2012.5.10上个星期天(2012.5.6)中午去华科参加了百度的笔试,试卷的最后一题是问百度搜索框的suggestion提示功能如何实现,用什么数据结构和算法。我简单地提及了一下Top K。前段时间看过算法大牛JULY博客中的一些面试题,其中有讲到Top K算法。且《编程之美》中也有一节专门讲解Top K。现如今百度也考到了,说明Top K算法真的是太重要了。可原创 2012-05-09 21:33:48 · 15581 阅读 · 4 评论 -
轻量级数据交换格式 JSON for C++
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。本质上来说,它和XML, YAML等格式化的数据格式没有什么区别,都易于人的阅读和编写,同时也易于机器解析和生成。它基于JavaScript Programming Language,Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完转载 2012-06-28 10:28:39 · 1830 阅读 · 0 评论 -
常考笔试题,详细解剖C++运算符sizeof()的使用及字节对齐问题
先看题目:struct A{ char c1; short s1; char c2; float f1; double d1;}; struct B{ char c1; char c2; short s1; float f1; double d1;};求sizeof(A) = ? size原创 2012-10-30 10:48:17 · 2809 阅读 · 0 评论 -
C++深拷贝与浅拷贝
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include using namespace std;class CExample {private: int a;public: CExam转载 2012-10-30 15:52:27 · 2765 阅读 · 1 评论 -
C++常考笔试题:不用if,while,do-while,for,打印出所有大于0小于k的整数.函数原型void printLess(int k);
笔试过程中左思右想,除了用定义一个类,利用其构造函数自动执行的特性来实现这个函数的功能,但是我想那样做的话肯定没有达到题目的要求.回到学校后时不时想一想这个题的解法,终于想出一个解题思路.解法一:递归方式(刚想出来)#include using namespace std;void printLess(int k){ switch(--k){ case 0:re原创 2012-11-03 10:32:07 · 2101 阅读 · 2 评论 -
MFC分割字符串
一切尽在代码中,各位自己看吧。还是非常好懂的。//分割字符串void Split(CString strSource,CStringArray& strDest){ strDest.RemoveAll(); TCHAR seps[] = _T(" "); TCHAR *token,*next_token; token = _tcstok_s( (LPTSTR)(LPCTSTR原创 2013-04-10 08:56:34 · 4686 阅读 · 1 评论 -
C++浮点数的比较问题
保留位置……原创 2013-08-23 15:48:54 · 1743 阅读 · 1 评论 -
C++多态及重载(overload),覆盖(override),隐藏(hide)的区别
转自 Hackbuteer1 http://blog.youkuaiyun.com/hackbuteer1/article/details/7475622C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决转载 2013-08-29 10:55:46 · 4518 阅读 · 0 评论 -
笔试题:创建一个单链表,结点包含学生的学号,姓名,性别,年龄信息.写几个程序,实现按学生学号插入,查询,删除等操作.
以下代码是LZ花两三个小时仔细斟酌的结果,用到的知识点有freopen()的使用,异常处理,仅供参考.如有纰漏,欢迎指正.#include using namespace std;//定义一个错误信息,用于抛出异常 char *err = "not find.";//定义学生结点信息 struct node{ char name[30]; char id[20];原创 2012-10-24 15:38:44 · 31790 阅读 · 4 评论 -
百度面试题:一个单链表,长度未知,如何快速的找出位于中间的那个元素
问题:一个单链表,长度未知,如何快速的找出位于中间的那个元素? 设置两个指针,p1,p2, 开始p1,p2均位于链接的头部。p1 每次步进两步,p2 每次步进一步当p1到达链表的末尾时,p2所在的位置就是链表的中间元素时间复杂度为O(n) 详细情况请见代码:#include using namespace std;struct node{ no原创 2012-05-31 17:23:23 · 3609 阅读 · 4 评论 -
判断单链表是否有环
有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如何找到环的入口点?解答:一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fas转载 2012-05-08 10:00:29 · 652 阅读 · 0 评论 -
带头结点单链表的各种各种运算(C++模板类实现)
一切尽在代码中……#include using namespace std;template //注意先声明 class SingleChain;template class Node{ private: Node *next; T _data; friend class SingleChain; //singleChain类可以自由访问Node类原创 2011-10-26 22:53:24 · 3957 阅读 · 0 评论 -
C++常考笔试题:用C++实现单例模式
Q:什么是单例模式?用C++语言实现(演示)一个单例模式. 一、功能 保证一个类仅有一个实例。 二、结构图 三、优缺点 Singleton模式是做为"全局变量"的替代品出现的。所以它具有全局变量的特点:全局可见、贯穿应用程序的整个生命期,它也具有全局变量不具备的性质:同类型的对象实例只可能有一个。 具体定义: 单例模式Singleton,原创 2012-10-30 14:22:53 · 3197 阅读 · 0 评论 -
设计模式C++描述----09.桥接(Bridge)模式 .
一. 举例N年前:计算机最先出来时,软件和硬件是一绑在一起的,比如IBM出了一台电脑,上面有一个定制的系统,假如叫 IBM_Win,这个IBM_Win系统当然不能在HP电脑上运行,同样HP出的HP_Win系统也不能运行在IBM上。这时如果有一家新公司Apple出了一台新电脑,那么这个公司也要开发自己的系统 Apple_Win,Apple_Linux。其实,上面几家公司开发的转载 2012-05-08 16:39:38 · 2523 阅读 · 1 评论 -
c++中sort()及qsort()的用法总结
当并算法详解请见点我想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~所以自己总结了一下,首先看sort函数见下表: 函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序 parti转载 2011-11-16 14:35:38 · 98949 阅读 · 7 评论 -
随机生成1000万个随机数作为海量测试数据
写于2012.5上个星期天(2012.5.6)中午去华科参加了百度的笔试,试卷的最后一题是问百度搜索框的suggestion提示功能如何实现,用什么数据结构和算法。我简单地提及了一下Top K。前段时间看过算法大牛JULY博客中的一些面试题,其中有讲到Top K算法。且《编程之美》中也有一节专门讲解Top K。现如今百度也考到了,说明Top K算法真的是太重要了。可惜之前都只是粗浅原创 2017-04-09 11:25:59 · 3705 阅读 · 0 评论 -
编程风格的重要性
前几天在tctop中看到JULY整理的Google迷你版编程规范,有一点看后觉得实在是非常受用,为此特意写了一个程序来进一步说明。代码如下: #include #include using namespace boost;using namespace std;class A{ public: A(int data = 1){ ptr =原创 2012-04-24 17:54:13 · 2123 阅读 · 0 评论 -
C++内存管理
C++内存管理 欢迎进入内存这片雷区。伟大的Bill Gates 曾经失言:640K ought to be enough for everybody — Bill Gates 1981程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通转载 2012-03-14 16:58:07 · 1011 阅读 · 0 评论 -
探讨int和unsigned能表示的最大的数和最小的数
一个 int 占4个字节,就是32个比特位,所以能表示的范围为-2^31~+2^31-1 2,147,483,647。若是unsigned int,能表示的范围是0 ~ +2^32-1 4,294,967,295 约43亿,与地球人口还差那么一大段距离(约78亿)看一段源码:#include #include using namespace std;int main(){原创 2012-03-10 12:49:01 · 18968 阅读 · 0 评论 -
【讨论】C++程序员是否该掌握某种汇编语言?
导语:日前网络上关于C++程序员是否应该对汇编语言有一定的掌握程度的问题讨论比较激烈。反对的观点大致有几点: 1.对于普通软件开发人员来讲,关注于上层实现,关注于功能和产品才是主要,汇编也用不到;2.很多的C++程序员不懂汇编,也成为了某公司某项目组主程序、核心研发,因此汇编可以转载 2011-09-14 12:22:27 · 1200 阅读 · 0 评论 -
第一语言,我坚持C++
大三大致明确了自己的方向,C++工程师,只专注C++语言,算法及数据结构,学精一门后自然懂得融会贯通。JAVA即使再受宠我也不会分心研究它。坚持我的C++。原创 2011-09-14 12:37:50 · 618 阅读 · 0 评论 -
C++ 标准模板库[Standard Template Library]
C++ 标准模板库 容器名名称数据结构性能备注stringstring通用字符串库连续存放的内存块、有保留内存堆中分配内存高效率的随转载 2011-09-15 16:56:44 · 1772 阅读 · 0 评论 -
百度笔试题:malloc/free与new/delete的区别
原文出处:http://blog.youkuaiyun.com/hackbuteer1/article/details/6789164 相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/dele转载 2011-09-19 17:04:24 · 583 阅读 · 0 评论 -
计算程序的运行时间(c语言)
我们经常会冒出这样一个问题,怎样知道我们写的程序运行出结果需要多少时间呢?有没有办法计算出来?答案是肯定的,下面介绍一种简单的计算程序运行时间的方法:直接看代码吧,所有需要介绍的东西都在代码里面。我相信各位的智商! #include "stdio.h"#原创 2011-08-22 17:13:09 · 1680 阅读 · 0 评论 -
C++最新标准C++ 0x详细介绍
C++是具有国际标准的编程语言,通常称作ANSI/ISO C++,1998年国际标准组织(ISO)颁布了C++语言的国际标准ISO/IEC 1488-1998。。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准,最近一次标准更新是在2009年,目前我们一转载 2011-09-27 19:50:44 · 8441 阅读 · 0 评论 -
C++预处理命令#define宏(macro)展开的若干用法
提及#define,你会不会马上联想到自己时时用#define MAX 100用于标记一个数组的长度?这样做无非两个原因,一来,#define是编译时的宏展开,对运行时间毫无影响。其二,使用诸如MAX这类见名知其意的标识符代替生硬的数学符号使程序更加清晰,而且更改起来着实方便,一原创 2011-10-12 19:44:04 · 10875 阅读 · 1 评论 -
MinGW和NotePad++的C/C++环境配置
Function List是Notepad++诸多很酷的功能之一。但最新的版本需要额外的步骤来正确设置Function List。笔者就将介绍如何安装Function List,以及如何设置Function List。首先,Function List插件并没有在Notep转载 2011-10-08 15:32:10 · 8357 阅读 · 0 评论 -
c++用动态创建二维数组的几种方法
我们在这篇文章中将会为大家总结几种C++二维数组new的常用方法,并对此进行详细的点评,让大家充分了解其中的优缺点。AD: C++编程语言中有一种叫做new的二维数组,它的应用方式比较灵活,可以有多种方法来帮助我们实现一些特定功能。在这里我们将会总结几种C++二维数组new的应用方式,来进行逐一的点评。C++二维数组new应用方式一:A (*ga转载 2011-08-21 15:24:54 · 2424 阅读 · 0 评论 -
C++中int *p[4]和 int (*q)[4]的区别
这俩兄弟长得实在太像,以至于经常让人混淆。然而细心领会和甄别就会发现它们大有不同。前者是指针数组,后者是指向数组的指针。更详细地说。前: 指针数组;是一个元素全为指针的数组.后: 数组指针;可以直接理解是指针,只是这个指针类型不是int也不是char而是 int [4]类型的数组.(可以结合函数指针一并看看......)int*p[4]------p是一个指针数组,每一个指向一原创 2011-11-09 12:10:33 · 33484 阅读 · 5 评论 -
C++命名规范
C++命名规范 如果想要有效的管理一个稍微复杂一点的体系,针对其中事物的一套统一、带层次结构、清晰明了的命名准则就是必不可少而且非常好用的工具。 在软件开发这一高度抽象而且十分复杂的活动中,命名规则的重要性更显得尤为突出。一套定义良好并且完整的、在整个项目中统一使用的命名规范将大大提升源代码的可读性和软件的可维护性。命名规范的整转载 2011-09-15 16:51:42 · 15865 阅读 · 1 评论 -
c/c++中int main(int argc,char *argv[])的具体含义
int main(int argc,char * argv[])argv为指针的指针argc为整数 char **argv or: char *argv[] or: char argv[][]main()括号内是固定的写法。下面给出一个例子来理解这两个参数的用法:假设程序的名称为prog,当只输入prog,则由操作系统传来的参数为:argc=1,表示转载 2011-11-12 11:37:51 · 18452 阅读 · 5 评论 -
Effective C++ 慎用private继承
当给定一个 hierarchy(继承体系),其中有一个 class Student 从一个 class Person 公有继承,当为一个函数调用的成功而有必要时,需要将 Students 隐式转型为 Persons,它通过向编译器展示来做到这一点。用 private inheritance(私有继承)代替 public inheritance(公有继承)把这个例子的一部分重做一下是值得的: c转载 2012-03-10 10:54:40 · 1402 阅读 · 0 评论 -
私有继承的一个例子,帮助加强理解
B私有继承A 是指,B is-implement-terms-of A, B是根据A实现的。#include using namespace std;class A{ public: A():_a(0){cout << "default constructor A..." << _a << endl;} A(int a):_a(a){cout << "assignment c原创 2012-03-10 11:09:43 · 1180 阅读 · 0 评论 -
C++中const用法集中营
const修饰符可以把对象转变成常数对象,什么意思呢? 意思就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用! 使用方法是:const int a=1;//这里定义了一个int类型的const常数变量a; 但就于指原创 2011-09-02 22:12:28 · 591 阅读 · 0 评论