C/C++编程
文章平均质量分 82
小敏纸
个性的我,自在的我。。。
展开
-
C++中替代sprintf的std::ostringstream输出流详解
一、简单介绍ostringstream是C++的一个字符集操作模板类,定义在sstream.h头文件中。ostringstream类通常用于执行C风格的串流的输出操作,格式化字符串,避免申请大量的缓冲区,替代sprintf。派生关系图:二、ostringstream的基本使用ostringstream的构造函数形式:explicit ostringstrea原创 2013-11-16 16:32:46 · 6556 阅读 · 3 评论 -
最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)
导读1. 什么是序列化?2. 为什么要序列化?好处在哪里?3. C++对象序列化的四种方法4. 最常用的两种序列化方案使用心得原创 2014-05-02 12:57:21 · 5691 阅读 · 0 评论 -
《你必须知道的495个C语言问题》知识笔记及补充
1. extern在函数声明中是什么意思?它可以用作一种格式上的提示表明函数的定义可能在另一个源文件中,但在extern int f(); 和 int f(); 之间并没有实质的区别。补充:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。也就是说extern有原创 2014-02-06 23:13:26 · 6813 阅读 · 1 评论 -
最难面试的IT公司之ThoughtWorks代码挑战——FizzBuzzWhizz游戏
最近互联网招聘平台拉勾网在五一期间推出个“最难面试的IT公司”代码挑战活动,评选出了5个最难面试的IT公司,即:ThoughtWorks、Google、Unisys、Rackspace、Cypress Semiconductor。每个公司联合拉勾网推出代码挑战,针对每个挑战都可以提交我们自己的代码,如果通过代码测试,就会在后面几天收到相关公司的笔试、面试邀请,这些都不多说了,感兴趣的可以去官网看看原创 2014-05-04 16:51:41 · 5760 阅读 · 0 评论 -
链表相关的算法题大汇总 — 数据结构之链表奇思妙想
声明:转自http://hi.baidu.com/lanxuezaipiao/item/afc616caf8393a155050585b基本函数1,构造节点: //定义节点类型struct Node{int value;Node*next;}; 2,分配节点//之所以要分配节点原因是需要在分配函数中进行初始化,并且也利于判断是否分配成功。No转载 2014-03-25 21:18:39 · 6001 阅读 · 0 评论 -
从Google开源RE2库学习到的C++测试方案
最近因为科研需求,一直在研究Google的开源RE2库(正则表达式识别库),库源码体积庞大,用C++写的,对于我这个以前专供Java的人来说真的是一件很痛苦的事,每天只能啃一点点。今天研究了下里面用到的测试方法,感觉挺好的,拿来跟大家分享下!(哈~C++大牛勿喷) 对于我这个C++菜鸟中的菜鸟而言,平时写几个函数想要测试一般都是在main中一个一个的测试,因为没用C++写过项目,没有原创 2013-11-16 16:02:09 · 3436 阅读 · 2 评论 -
针对范围对的高效查找算法设计(不准用数组)
题目链接在:针对一群范围对的最快查找算法设计(不要用数组),是我目前遇到的一个较棘手的问题。描述如下:假如有一群范围对,格式为:,设计一个最快查找算法,使得给定一个值,输出该值所在范围对的结果值。注意:范围对之间没有交集,即不可能存在和这样的两个范围对。例如有以下几个范围对:, 20>, 27>, 28>, 27>, 122>, 12>, 13>原创 2014-06-22 19:52:11 · 2265 阅读 · 0 评论 -
C++ string中的几个小陷阱,你掉进过吗?
C++开发的项目难免会用到STL的string,使用管理都比char数组(指针)方便的多,但在得心应手的使用过程中也要警惕几个小陷阱,避免我们项目出bug却迟迟找不到原因。原创 2014-05-02 21:38:44 · 4789 阅读 · 10 评论 -
2014木瓜移动校园招聘笔试题之递归优化题解答
在网上看到的,这里给出一个可行解。原题代码的优化,给出下一段代码,请做出最好的优化int f(int n) { if(n4) return n*n; else { return f(n-4)*f(n-1) -f(n-2)*f(n-2); }}解答无非是将递归转化为循环,防止重复计算中间值,跟斐波那契数列f(n)=f(n-1)+f(n-2)原创 2014-08-25 19:31:54 · 3194 阅读 · 0 评论 -
C/C++求职宝典21个重点笔记(常考笔试面试点)
这是我看过《C/C++求职宝典》一书做的笔记,都是一些笔试面试中常考的重点难点问题。原创 2014-11-27 22:51:49 · 6763 阅读 · 6 评论 -
C++ Primer Plus第6版18个重点笔记
下面是我看《C++ Primer Plus》第6版这本书后所做的笔记,作为备忘录便于以后复习。笔记部分C++的const比C语言#define更好的原因?首先,它能够明确指定类型,有类型检查功能。其次,可以使用C++的作用域规则将定义限制在特定的函数或文件中。第三,可以将const用于更复杂的类型,比如数组和结构。C语言中也有const,其与C++中const的区别是:一是作用域规则不同;另一个是原创 2014-11-30 14:06:22 · 10655 阅读 · 7 评论 -
C++智能指针简单剖析
导读最近在补看《C++ Primer Plus》第六版,这的确是本好书,其中关于智能指针的章节解析的非常清晰,一解我以前的多处困惑。C++面试过程中,很多面试官都喜欢问智能指针相关的问题,比如你知道哪些智能指针?shared_ptr的设计原理是什么?如果让你自己设计一个智能指针,你如何完成?等等……。而且在看开源的C++项目时,也能随处看到智能指针的影子。这说明智能指针不仅是面试官爱问的题材,更是原创 2014-11-29 22:01:19 · 9319 阅读 · 8 评论 -
C++编程思想重点笔记(下)
这是我看C++编程思想所做的笔记,都是精华内容,不管是程序员新手还是老手,都值得读一读。原创 2014-12-02 09:33:36 · 4297 阅读 · 2 评论 -
C++编程思想重点笔记(上)
这是我看C++编程思想所做的笔记,都是精华内容,不管是程序员新手还是老手,都值得读一读。原创 2014-12-01 14:49:24 · 7687 阅读 · 7 评论 -
C/C++的内存泄漏检测工具Valgrind memcheck的使用经历
Linux下的Valgrind真是利器啊(不知道Valgrind的请自觉查看参考文献(1)(2)),帮我找出了不少C++中的内存管理错误,前一阵子还在纠结为什么VS 2013下运行良好的程序到了Linux下用g++编译运行却崩溃了,给出一堆汇编代码也看不懂。久久不得解过后,想想肯定是内存方面的错误,VS在这方面一般都不检查的,就算你的程序千疮百孔,各种内存泄露、内存管理错误,只要不影响运行,没有读原创 2014-03-18 21:46:04 · 6179 阅读 · 1 评论 -
也谈低级bug引来的悲伤:你能一眼看出下面的bug所在吗?
哪个程序员的生命中没出现过几个低级bug呢?这些bug真是折磨的我们痛苦不已,但同时也加深了与code的感情。比如昨天,作为一个还算细心的程序媛(@程序媛敏敏)也被一个低级bug摧残的连自己的节日都没好好过。看下面的code,你说说会输出多少个“Alexia”呢?原创 2014-03-08 11:55:05 · 7049 阅读 · 2 评论 -
单例模式如何在多线程环境下保证安全—Double Checked Locking 模式使用
一、Double Checked Locking 模式应用意图无论什么时候当临界区中的代码仅仅需要加锁一次,同时当其获取锁的时候必须是线程安全的,可以用Double Checked Locking 模式来减少竞争和加锁载荷。应用特别说明:1. Double Check Locking模式是singleton的多线程版本,如果是单线程则应使用singleton。2. Do转载 2013-11-26 23:00:49 · 6750 阅读 · 0 评论 -
看开源代码利器—用Graphviz + CodeViz生成C/C++函数调用图(call graph)
CodeViz是《Understanding The Linux Virtual Memory Manager》的作者 Mel Gorman 写的一款分析C/C++源代码中函数调用关系的open source工具(类似的open source软件有 egypt、ncc)。这篇文章详细介绍其安装过程及使用方法,对安装过程中出现的没一个错误提示进行讲解,一步步指引大家学会看开源代码。原创 2013-11-28 22:23:41 · 9772 阅读 · 1 评论 -
Stack的三种含义(数据结构、调用栈、内存区域)
原文出处: 阮一峰(@ruanyf)学习编程的时候,经常会看到stack这个词,它的中文名字叫做”栈”。理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分。含义一:数据结构stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。在这种数据结构中,数据转载 2013-12-02 22:44:57 · 3617 阅读 · 0 评论 -
VS和Eclipse的调试功能哪个更强大?
以前一直用VS 2012来调试C/C++代码,F5、F10、F11用起来甚是顺手,前面也写过一篇关于VS最好用的快捷键:Visual Studio最好用的快捷键(你最喜欢哪个),所以对于调试C/C++代码我一直钟情于VS。可最近下载了一个linux环境下用C++编写的开源库,准备进行一番研究,由于我对gdb调试只处在初步阶段,还没有对整个项目用gdb调试过,而且gdb调试看起来也不方便,还是V原创 2013-12-29 23:07:53 · 5517 阅读 · 5 评论 -
无力吐槽在Eclipse CDT下进行C/C++开发
继前文“VS和Eclipse的调试功能哪个更强大?”介绍了下自己为什么必须要在Eclipse下开发C/C++程序而不是VS下开发,也吐槽了Eclipse下调试C/C++程序的纠结与不便。但还是必须得在Eclipse下进行开发,谁让微软这个不支持那个也不支持呢?而且我对linux下的gdb调试也不是很熟,最终还是选择继续在Eclipse下进行开发。总体对我影响不是很大,毕竟我对Eclipse要熟原创 2014-01-08 20:07:30 · 6353 阅读 · 7 评论 -
do {...} while (0) 在宏定义中的作用
如果你是一名C程序员,你肯定很熟悉宏,它们非常强大,如果正确使用可以让你的工作事半功倍。然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间。在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。下面就是一个例子:#define __set_task_state(tsk, state_value)原创 2014-01-28 14:03:07 · 2413 阅读 · 1 评论 -
do {...} while (0) 的用途汇总(欢迎补充)
在一些Linux内核和其它的开源代码中,我们经常看到像下面这样的代码:do{ ...}while(0)该代码片段并非循环,这样想想似乎使用do…while没有任何意义,那么为什么还要使用它呢?实际上,do{...}while(0)的用途并不仅仅是优化你的代码。经过一系列的调研和探索,我们总结出它的一些用途如下。1. 帮助定义复杂的宏以避免错误详细解释请看“do {...原创 2014-01-28 14:54:15 · 1997 阅读 · 1 评论 -
常问面试题:C++中sizeof的陷阱及应答
C++中sizeof是经常被问到的一个概念,比如,下面的几个关于sizeof的面试题反复出现在各大IT公司的技术面试当中,我们有必要完全理解并掌握。注:在曾经面试大公司时,我的确被问到过这样的问题。面试题:定义一个空的数据类型,里面没有任何成员变量和成员函数,对该类型求sizeof,得到的结果是多少?答案:是1,为什么不是0?空类型的实例中不包含任何信息,本来求sizeof应该原创 2014-02-09 19:02:21 · 4295 阅读 · 1 评论 -
面试题之发散思维能力:如何用非常规方法求1+2+···+n
今天在《剑指offer》里看到了下面这样一个简单且有趣的题,考察程序员的发散思维能力,前提是你对C++相关知识点熟悉,否则是想不出来方案的,分享给大家。 题目:求1+2+···+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 点评:这个问题本身没有太多的实际意义,因为在软件开发中不可能有这么苛刻的限制。但不少原创 2014-02-11 19:58:48 · 4363 阅读 · 1 评论 -
C++11中值得关注的几大变化
声明:本文转自赖勇浩CSDN博客声明:本文源自 Danny Kalev 在 2011 年 6 月 21 日发表的《The Biggest Changes in C++11(and Why You Should Care)》一文,几乎所有内容都搬了过来,但不是全文照译,有困惑之处,请参详原文(http://www.softwarequalityconnection.com/2011/06/t转载 2014-02-13 16:01:11 · 1544 阅读 · 0 评论 -
常见笔试面试题:实现一个递增排序的单链表
题目:实现一个递增排序的单链表,即每次向链表中插入一个或多个元素后都能保证链表仍是递增有序的。为了实现该功能,首先定义一个头文件linked_list.h声明单链表的基本操作:#ifndef LINKED_LIST_H_#define LINKED_LIST_H_#define _INVALID 0xFFFFFFFFclass linked_list { // value原创 2014-03-04 12:36:03 · 4975 阅读 · 0 评论 -
Unicode字符集与多字节字符集的比较(解决“cannot convert parameter 1 from 'char []' to 'LPCWSTR'”)
今天因为需求又要在Windows下读取目录和文件了,还好以前做过这方面的工作(见“在Linux下和Windows下遍历目录的方法及如何达成一致性操作 ”,封装在Windows和Linux下读取目录和文件的操作函数),当然直接拿过来用了,可没想到在VS2012下编译的时候出现了以下错误:error C2664: 'FindFirstFileW' : cannot convert parameter 1 from 'char [512]' to 'LPCWSTR'原创 2014-03-05 13:14:15 · 5741 阅读 · 1 评论 -
在Linux下和Windows下遍历目录的方法及如何达成一致性操作
最近因为测试目的需要遍历一个目录下面的所有文件进行操作。在Java中直接用File类就可以搞定,因为Java中使用了组合模式,使得客户端对单个文件和文件夹的使用具有一致性,非常方便。但在C中就不一样了,而且在不同的平台下使用方法也不同。在Linux下实现该功能就非常方便,因为自带有API库,在Windows下就有些麻烦,但本文提供了封装,使其与Linux下一样方便操作。原创 2013-11-20 14:37:26 · 2968 阅读 · 0 评论 -
10道C++输出易错笔试题收集(敢进来挑战吗?)
下面这些题目都是我之前准备笔试面试过程中积累的,大部分都是知名公司的笔试题,C++基础薄弱的很容易栽进去。我从中选了10道简单的题,C++初学者可以进来挑战下,C++大牛也可以作为娱乐玩下(比如下面的第6题)。为了便于大家思考,将题目与答案分开,不过无论题目本身如何,我觉得后面的解析过程更值得学习,因为涉及很多我们学习C++过程中必知必会的小知识点 。第一部分:题目如下函数,在32 bit系统fo原创 2014-12-06 13:08:13 · 4298 阅读 · 6 评论