- 博客(97)
- 收藏
- 关注
原创 辗转相除法求最大公约数
辗转相除法的格式例如,求(319,377):∵ 319÷377=0(余319)∴(319,377)=(377,319);∵ 377÷319=1(余58)∴(377,319)=(319,58);∵ 319÷58=5(余29),∴ (319,58)=(58,29);∵ 58÷29=2(余0),∴ (58,29)= 29;∴ (319,377)=29.可以写成
2016-03-27 22:38:32 1322
转载 ios_base::sync_with_stdio() 的具体用法
http://bbs.csdn.net/topics/280019504http://tieba.baidu.com/p/2643059585决定C++标准streams(cin,cout,cerr...)是否与相应的C标准程序库文件(stdin,stdout,stderr)同步,也就是是否使用相同的stream缓冲区,缺省情况是同步的,但由于同步会带来某些不必要的负担,因此该函数
2016-03-27 22:16:16 5009
转载 A* 寻路算法
http://myst729.github.io/2014/a-star-pathfinding/A* 算法是一种解决图遍历问题的计算机算法,在电子游戏中最主要的应用是寻找地图上两点间的最佳路线。为了便于理解,本文将以正方形网格地图为例进行讲解。如图,蓝色格子是障碍物,灰色格子是可通过区域,绿色格子是起点(S),红色格子是终点(D)。我们要做的是找到一条从起
2016-03-26 10:10:49 547
转载 理解A*寻路算法具体过程
http://www.cnblogs.com/technology/archive/2011/05/26/2058842.html理解A*寻路算法具体过程 这两天研究了下 A* 寻路算法, 主要学习了这篇文章, 但这篇翻译得不是很好, 我花了很久才看明白文章中的各种指代. 特写此篇博客用来总结, 并写了寻路算法的代码, 觉得有用的同学可以看看.
2016-03-26 10:08:58 346
转载 char * 与 string 类型相互转换方法--Linux C/C++
http://blog.csdn.net/harry_lyc/article/details/60101671:对于C风格的字符串比如char*,char str[],转换为 string char * 和char str[]类型可以直接转换为string 类型; 即,在char * chstr,
2016-03-25 18:18:15 6972
转载 C++字符串转数字,数字转字符串
http://www.cnblogs.com/emituofo/archive/2011/11/11/2245749.html1. 字符串转数字 如将“32”转为32,将“3.1415”转为3.1415,将“567283”转为567283。使用://Convert string to integer, more @http://www.cplusplus.com/refere
2016-03-25 13:38:20 394
转载 Segmentation fault 问题浅谈
http://blog.chinaunix.net/uid-24347760-id-1989555.html今天调试程序时遇到了一个问题,当我用GDB调试程序时出现了Segmentation fault,以前没有遇到过,最后查看资料,有点明白了。 出现了Segmentation fault,基本上的原因是,非法的内存访问。例如数组的越界,在循环操作时循环变量的控制问题,也有字
2016-03-25 13:29:00 646
原创 ifstream对象打开一个文件关闭后再打开另一个文件
ifs.close();ifstream 是有状态的对象,一个 ifstream 操作完后一般处于非正常状态,内部的 eofbit 标记 failbit 标记等可能已被设定。重新打开文件并不会清除这些标记,因此需要添加一步:ifs.clear(); // 去除 ifs 中的错误标记(如文件末尾标记或读取失败标记等)然后再打开新文件即可ifs.open("2.txt");
2016-03-24 22:10:16 2409
转载 字符串分割(C++)
http://www.cnblogs.com/MikeZhang/archive/2012/03/24/MySplitFunCPP.html经常碰到字符串分割的问题,这里总结下,也方便我以后使用。一、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。
2016-03-24 19:19:17 275
转载 linux目录作用详解(超详细,树状排版)
http://blog.csdn.net/cuibo1123/article/details/2606895自己在网上找了好久,没找到,干脆自己做一个。给大家分享下,希望能顺便指出我的错误。请复制到记事本,然后取消自动换行。看起来就会很清晰了。 / 根目录 │ ├boot/ 启动文件。Linux的内核及引导系统程序所需要的
2016-03-23 21:55:13 305
转载 Linux 中直接 I/O 机制的介绍
http://www.ibm.com/developerworks/cn/linux/l-cn-directio/直接 I/O 的动机在介绍直接 I/O 之前,这一小节先介绍一下为什么会出现直接 I/O 这种机制,即传统的 I/O 操作存在哪些缺点。什么是缓存 I/O (Buffered I/O)缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/
2016-03-23 17:51:13 308
转载 Linux 中的零拷贝技术,第 2 部分
http://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy2/index.htmlLinux 中的直接 I/O如果应用程序可以直接访问网络接口存储,那么在应用程序访问数据之前存储总线就不需要被遍历,数据传输所引起的开销将会是最小的。应用程序或者运行在用户模式下的库函数可以直接访问硬件设备的存储,操作系统内核除了进行必要的虚拟
2016-03-23 17:46:10 409
转载 Linux 中的零拷贝技术,第 1 部分
http://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy1/index.html引言传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行传输。这样做最大的好处是可以减少磁盘 I/O 的操作,因为如果所请求的数
2016-03-23 17:44:14 335
原创 stat,fstat以及lstat函数
stat,fstat以及lstat函数 本章的讨论的中心是三个stat函数以及它们所返回的信息。 #include int stat(const char*pathname,struct stat*buf); int fstat(int filedes,struct stat*buf); int lstat
2016-03-23 16:23:22 614
转载 S_ISREG S_ISDIR 等几个常见的宏
S_ISLNK(st_mode):是否是一个连接.S_ISREG(st_mode):是否是一个常规文件.S_ISDIR(st_mode):是否是一个目录S_ISCHR(st_mode):是否是一个字符设备.S_ISBLK(st_mode):是否是一个块设备S_ISFIFO(st_mode):是否 是一个FIFO文件.S_ISSOCK(st_mode):是否是一个SOCKET
2016-03-23 11:36:40 4252
转载 关于C++中的虚拟继承的一些总结
http://www.cnblogs.com/BeyondAnyTime/archive/2012/06/05/2537451.html1.为什么要引入虚拟继承虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承
2016-03-21 23:07:26 308
转载 C++虚基类的实现机制:笔记
在《深度探索C++对象模型》里,有一个问题,也是去公司面试的时候那些技术人员常问的问题:在C++中,obj是一个类的对象,p是指向obj的指针,该类里面有个数据成员mem,请问obj.mem和p->mem在实现和效率上有什么不同。答案是:只有一种情况下才有重大差异,该情况必须满足以下3个条件:(1)、obj 是一个虚拟继承的派生类的对象(2)、mem是从虚拟基类派生下来的成
2016-03-21 23:06:17 418
转载 gdb 调试利器
https://github.com/me115/linuxtools_rst/blob/master/tool/gdb.rst#gdbgdb 调试利器GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c++程序员,gdb是必不可少的工具;启动gdb对C/C++程序的调试,需要在编译前就加
2016-03-20 20:24:42 306
转载 什么时候需要用hash_map,什么时候需要用map?
大家都知道在C++的STL中map是使用树来做查找算法,而hash_map使用hash表来排列配对,是使用关键字来计算表位置。那使用起来他们的差别主要是什么呢?对于性能差别是什么,适合什么情况下应用呢?于是我对它们进行了一些测试,并记录了测试数据供大家分享。 测试的内容主要是map和hash_map的添加、删除、查找和遍历操作,首先进行了几组测试,分别是10万次、30万次,时间单位均为毫
2016-03-20 16:07:44 4233 3
转载 vector迭代器失效场景
vector迭代器失效场景push_back(vlaue) 操作导致vector发生内存重分配,所有迭代器失效(不是必然)。vectorint> vec = { 1, 2, 3, 4 };//size:4 capacity:4auto iter = vec.begin();vec.push_back(5); //size:5 capacity:8cout
2016-03-20 14:59:33 1751
转载 详解C++右值引用
C++0x标准出来很长时间了,引入了很多牛逼的特性[1]。其中一个便是右值引用,Thomas Becker的文章[2]很全面的介绍了这个特性,读后有如醍醐灌顶,翻译在此以便深入理解。目录概述move语义右值引用强制move语义右值引用是右值吗?move语义与编译器优化完美转发:问题完美转发:解决方案Rvalue References An
2016-03-20 14:54:12 512
转载 探索C++0x: 1. 静态断言(static_assert)
转载请注明来源:http://blog.csdn.net/thesys/archive/2010/06/02/5641350.aspx简介C++0x中引入了static_assert这个关键字,用来做编译期间的断言,因此叫做静态断言。其语法很简单:static_assert(常量表达式,提示字符串)。如果第一个参数常量表达式的值为真(true或者非零值),那么sta
2016-03-20 14:09:31 361
转载 std::forward(expr)参数推导
对于forward,其boost的实现基本可以等价于这样的形式:template typename T>T&& forward(typename remove_referenceT>::type& param){ return static_castT&&>(param);}那么这里面是如何达到完美转发的呢?举一个栗子templa
2016-03-20 14:06:04 495
转载 C++11尝鲜:std::move和std::forward源码分析
http://blog.csdn.net/zwvista/article/details/6848582std::move和std::forward是C++0x中新增的标准库函数,分别用于实现移动语义和完美转发。下面让我们分析一下这两个函数在gcc4.6中的具体实现。预备知识引用折叠规则:X& + & => X&X&& + & => X&X& + && =>
2016-03-20 11:21:46 395
转载 C++11中的Move语义和右值引用
http://www.cnblogs.com/520zijuan/archive/2013/02/04/2891948.html郑重声明:本文是笔者网上翻译原文,部分有做添加说明,所有权归原文作者!地址:http://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html
2016-03-19 22:54:18 597
转载 STL源码剖析——序列容器之list
前言 在SGI STL中,list容器是一个循环的双向链表,它的内存空间效率较前文介绍的vector容器高。因为vector容器的内存空间是连续存储的,且在分配内存空间时,会分配额外的可用空间;而list容器的内存空间不一定是连续存储,内存之间是采用迭代器或节点指针进行连接,并且在插入或删除数据节点时,就配置或释放一个数据节点,并不会分配额外的内存空间,这两个操作过程都是常数时间。
2016-03-19 19:57:20 678
转载 对寄存器ESP和EBP的一些理解
PS:EBP是当前函数的存取指针,即存储或者读取数时的指针基地址;ESP就是当前函数的栈顶指针。每一次发生函数的调用(主函数调用子函数)时,在被调用函数初始时,都会把当前函数(主函数)的EBP压栈,以便从子函数返回到主函数时可以获取EBP。下面是按调用约定__stdcall 调用函数test(int p1,int p2)的汇编代码假设执行函数前堆栈指针ESP为0xAAAAAAA ;
2016-03-19 17:20:58 423
转载 缓冲区溢出攻击
http://www.cnblogs.com/fanzhidongyzby/p/3250405.html缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0day安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明
2016-03-19 17:03:44 394
转载 STL源码剖析——序列容器之vector
http://blog.csdn.net/chenhanzhun/article/details/39287983前言 在STL编程中,我们最常用到的就是容器,容器可分为序列容器和关联容器;本文记录的是我们经常使用的序列容器之vector,vector的数据安排和操作方式类似于C++内置数组类型array,唯一的区别就是在于空间的灵活运用。内置数组array是静态空间,一
2016-03-19 16:30:10 543
转载 vector利用swap()函数进行内存的释放
http://blog.csdn.net/jerryjbiao/article/details/7389233相信大家看到swap这个词都一定不会感到陌生,甚至会有这样想法:这不就是简单的元素交换嘛。的确,swap交换函数是仅次于Hello word这样老得不能老的词,然而,泛型算法东风,这个小小的玩意儿却在C++ STL中散发着无穷的魅力。本文不仅详细地阐述STL泛型算法swap,并借助
2016-03-19 16:07:36 826
转载 vector.resize 与 vector.reserve的区别
http://www.cnblogs.com/kex1n/archive/2012/05/22/2512789.htmlstd::vector的reserve和resize的区别1. reserve: 分配空间,更改capacity但不改变size2. resize: 分配空间,更改capacity也改变size如果知道vector的大小,resize一下可以当数组来用
2016-03-19 15:32:08 388
转载 STL源码剖析——迭代器
http://blog.csdn.net/chenhanzhun/article/details/39234077前言 在STL的思想中,容器和算法是彼此独立设计的,再通过某种方式使它们连接;而迭代器是使算法独立于使用的容器类型,即迭代器是连接算法和容器的方法。由于迭代器是一种行为类似指针的对象,也就说迭代器是一种广义指针,即迭代器对解除引用操作(operator*)和访问成
2016-03-18 15:21:41 571
转载 STL源码剖析——Traits编程技术
http://blog.csdn.net/chenhanzhun/article/details/39230529前言 在STL编程中,容器和算法是独立设计的,即数据结构和算法是独立设计的,连接容器和算法的桥梁就是迭代器了,迭代器使其独立设计成为可能。Traits编程技术是STL中最重要的编程技术,Traits可以获取一个类型的相关信息。在学习《STL源码剖析》时,看到关
2016-03-18 14:28:16 317
转载 STL源码剖析——空间配置器
前言 SGI STL源码下载地址 空间配置是为存储数据提供可用的空间,在Standard Template Library(STL)中,空间配置是最底层的东西,为容器提供服务。在C++中,一般管理内存分配是使用new和delete进行操作,这两个操作都需要经过两个步骤;new操作的步骤:(1)调用::operator new配置内存;(2)调用对象的构造函数
2016-03-18 14:08:44 381
转载 C语言指针导学(4)——分清函数指针和指针函数
http://blog.csdn.net/porscheyin/article/details/3461632请转载的朋友注明出处 四.分清函数指针和指针函数关于指针和数组斩不断理还乱的恩怨还真是说了不少,不过现在应该已经理清了。有了上一讲的基础,本讲的内容相对来说就比较容易理解了。1.指向函数的指针(函数指针)来分析这样一个声明,void (*f) (
2016-03-18 10:53:57 439
转载 c++异常详解
http://www.cnblogs.com/hdk1993/p/4357541.html一、什么是异常处理 一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出
2016-03-17 22:24:47 433
转载 MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
数据库引擎介绍MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL+API自己做一个引擎。下面介绍几种数据库引擎: ISAM:ISAM是一个定义明确且
2016-03-17 21:15:35 396
转载 搜索引擎原理 – 正排索引、倒排索引以及齐普夫法则
http://www.tinysz.com/36.html我们在提交一个关键字时,搜索引擎是如何快速定位到包含有此关键字的相关页面的?这就是索引系统的功劳,索引系统负责为关键字和网页建立对应关系,使得在海量网页中迅速查找成为可能。索引首先我们先介绍下索引(Index)。索引本质上是一种记录信息的信息,它本身占较小的体积,但记录了关键字在整个系统中出现的位置。日常生活
2016-03-17 21:11:37 3565
转载 倒排索引-搜索引擎的基石
http://blog.csdn.net/hguisu/article/details/79697571.概述 在关系数据库系统里,索引是检索数据最有效率的方式,。但对于搜索引起,他它并不能满足其特殊要求: 1)海量数据:搜索引擎面对的是海量数据,像Google,百度这样大型的商业搜索引擎索引都是亿级甚至几千的网页数量 ,面对如此海量数据 ,
2016-03-17 21:06:43 544
转载 搜索引擎-倒排索引基础知识
http://blog.csdn.net/hguisu/article/details/7962350搜索引擎的索引1.单词——文档矩阵 单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义。图3-1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系。
2016-03-17 21:04:52 440
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人