C/C++语言
C/C++语言相关
lqglqglqg
这个作者很懒,什么都没留下…
展开
-
C++ Vector swap操作前后迭代器为何不失效
http://blog.chinaunix.net/uid-28387257-id-3968233.html作者:henrystark henrystark@126.com Blog: http://henrystark.blog.chinaunix.net/日期:20131029本文可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接。 如有错讹,烦请指出转载 2015-09-07 21:23:59 · 636 阅读 · 0 评论 -
stl的hashtable底层实现
http://www.cnblogs.com/JackyTecblog/archive/2012/08/12/2634764.htmlHashtable在C++的STL里占据着比较重要的一席之地。其中的hash_set、hash_map、hash_multiset、hash_multimap四个关联容器都是以hashtable为底层实现方法(技巧)。应该说,上述的四个关联式容器提供转载 2015-10-02 11:42:23 · 2388 阅读 · 0 评论 -
stl中set和hash_set底层实现详解
set和hash_set是STL中比较重要的容器,有必要对其进行深入了解。在STL中,set是以红黑树(RB-tree)作为底层数据结构的,hash_set是以Hash table(哈希表)作为底层数据结构的。set可以在时间复杂度为O(logN)情况下插入、删除和查找数据。hash_set操作的时间复杂度则比较复杂,这取决于哈希函数和哈希表的负载情况。下面列出set和hash_set的常用函数:转载 2015-10-02 11:31:00 · 953 阅读 · 0 评论 -
stl中map和hash_map底层实现详解
http://blog.163.com/liuruigong_lrg/blog/static/27370306200711334341781/0 为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武转载 2015-10-02 11:28:48 · 1637 阅读 · 0 评论 -
stl的priority_queue底层实现
priority_queue 优先级队列是一个拥有权值概念的单向队列queue,在这个队列中,所有元素是按优先级排列的(也可以认为queue是个按进入队列的先后做为优先级的优先级队列——先进入队列的元素优先权要高于后进入队列的元素)。在计算机操作系统中,优先级队列的使用是相当频繁的,进线程调度都会用到。在STL的具体实现中,priority_queue也是以别的容器作为底部结构,再根据堆的处理规则转载 2015-10-02 11:39:51 · 2172 阅读 · 0 评论 -
STL迭代器删除失效问题
http://www.tuicool.com/articles/zYv67b下面材料整理自Internet&著作。STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。 在使用 list、set转载 2015-10-29 11:32:40 · 464 阅读 · 0 评论 -
stl学习
3、explicit修饰的构造函数不能担任转换函数。在很多情况下,隐式转换是有意的,并且是正当的。但有时我们不希望进行这种自动的转换。例如:为了避免这样的隐式转换,应该象下面这样显式声明该带单一参数的构造函数:class String {int size;char *p;//..public: // 不要隐式转换 explicit Strin转载 2015-09-20 13:14:28 · 337 阅读 · 1 评论 -
c/c++工程修改枚举变量惹的祸
c/c++代码定义枚举变量时,枚举变量与编译器定义的符号冲突,这是需要把OK修改为OK_x类似的做法,一定要确保所有OK的地方相应的都要修改为OK_x,否则程序即使编译过了,运行的逻辑就可能是混乱的。。。c代码编程血泪史。。。原创 2016-03-21 14:34:57 · 807 阅读 · 0 评论 -
交叉编译valgrind
http://blog.csdn.net/jiazhen/article/details/189664231. wget http://valgrind.org/downloads/valgrind-3.9.0.tar.bz2tar xvf valgrind-3.9.0.tar.bz2cd valgrind-3.9.0apt-get install au转载 2015-07-07 18:41:37 · 1240 阅读 · 0 评论 -
c++工程编译选项符号忘记定义导致程序运行不确定问题
c/c++工程eclipse环境下编译chromium_net库这里的符号定义如果忘记添加了也许会导致大吐血的调试历程哦。。。原创 2016-03-17 14:33:54 · 602 阅读 · 0 评论 -
valgrind跟踪fork出的子进程-debug调试
valgrind --leak-check=full --trace-children=yes --undef-value-errors=no --track-fds=yes --num-callers=50 --log-file=$2%p $1原创 2015-06-23 17:42:19 · 3755 阅读 · 0 评论 -
linux库链接问题-找不到库
http://blog.chinaunix.net/uid-23069658-id-4028681.html别人电脑上运行好好的,拷贝过来的bsmanager和systemserver就是找不到infra库,ldd 查看也是not found,eclipse运行之前就已经source env.sh设置环境变量(LD_LIBRARY_PATH),设置了链接库的路径了,看着路径打印出来转载 2015-09-09 10:27:00 · 1270 阅读 · 0 评论 -
libtool: *.la was moved的问题
http://m.blog.csdn.net/blog/bytxl/16963517今天安装proftpd with mysql,make时遇到如下报错libtool: link: warning: library `/usr/sfw/mysql/lib/libmysqlclient.la' was moved.libtool: link: wa转载 2015-05-29 23:52:23 · 890 阅读 · 0 评论 -
curl库移植,配置编译器和编译参数
./configure 'CC=i686-linux-gnu-gcc' 'CFLAGS=-m32 -g' 'LDFLAGS=-m32' 'CPPFLAGS=-m32 -g'原创 2015-11-27 17:13:00 · 1181 阅读 · 0 评论 -
linux代码编译找不到符号问题
代码都编译通过,没有任何错误,链接的时候一堆undefiled的符号,首先拷贝这些符号,整个workspace一顿grep,如果是源码文件中定义的符号,好说,多半是在.h文件里面赋值初始化了,然后其他地方用到的时候没有extern或者应该.h文件中只做声明,在对应的.cpp文件中赋值定义分配空间,这样在其他地方引用的时候就不会有事了。编译d工程,用到了c库b和a库,可惜,gre原创 2015-09-09 10:42:52 · 1554 阅读 · 1 评论 -
学习C++的50条忠告(转载)
1. 把 C++当成一门新的语言学习(和 C 没啥关系!真的。); 2. 看《 Thinking In C++ 》,不要看《C++ 变成死相》; 3. 看《 The C++ ProgrammingLanguage 》和《 Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4. 不要被 VC 、 BCB 、 BC 、原创 2014-03-07 15:50:46 · 470 阅读 · 0 评论 -
C++ static、const和static&n…
http://blog.csdn.net/yjkwf/article/details/6067267virtual consthttp://jimobit.blog.163.com/blog/static/2832577820100277264870/mutable volatile consthttp://blog.csdn.net/wuliming_sc/article/det原创 2014-03-07 15:50:39 · 454 阅读 · 0 评论 -
c++面试题
c++多态实现机制详解http://www.360doc.com/content/13/0528/05/7775902_288693506.shtmlhttp://blog.csdn.net/zyq0335/article/details/7657465实例一#includeusing namespace std;class A{public: virtual~A()原创 2014-03-07 15:51:36 · 528 阅读 · 0 评论 -
c程序设计实践-1
值语句很可能将产生错误结果:这样写的意图是给str中随后的两个位置赋空格值,但实际效果却要依赖于 i的更新时刻,很可能把str里的一个位置跳过去,也可能导致只对i实际更新一次。这里应该把它分成两个语句:下面的赋值语句虽然只包含一个增量操作,但也可能给出不同的结果:如果初始时 i的值是3,那么数组元素有可能被设置成 3或者4。不仅增量和减量操作有副作用, I / O也是一种附带地转载 2014-05-28 10:28:45 · 540 阅读 · 0 评论 -
More effective c++
1.不要对数组使用多态,不能向函数传递派生类对象数组,多态和指针算法不能混合在一起使用2.避免无用的缺省构造函数,尽量使用缺省构造函数,可以省去很多麻烦3.用不使用语法关键字的等同的函数来替代转换运算符4.C++编译器把“>>”做为一个符号来解释。在两个“>”间没有空格,语句会产生语法错误5.让编译器进行隐式类型转换所造成的弊端要大于它所带来的好处,所以除非你确实需要,不要定义类型转换函数原创 2014-03-07 15:51:43 · 646 阅读 · 0 评论 -
模板参数类型,仿函数
今天在写一个C++程序的时候,要用到STL的set容器,而且我想让它利用自定义的排序准则来实现自动排序。而且set中元素类型是指向自定义的结构体的指针。结果运行总是出错。下面先贴出起初的代码:[cpp] view plaincopyprint?#include #include using name转载 2015-10-27 21:57:53 · 589 阅读 · 0 评论 -
g++编译器编译过程
1 下载gmpftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2编译安装2 下载gcc-4.3.tar.gz和gcc-g++4.3.tar.gzhttp://ftp.gnu.org/gnu/gcc/gcc-4.3.4/二者解压时生成的目录相同,会自动对接3 编译安装g++4.3原创 2016-09-29 11:11:04 · 595 阅读 · 0 评论 -
多重继承和虚继承的内存布局
这篇文章主要讲解虚继承的C++对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。原文见这里(By Edsko de Vries, January 2006) 敬告: 本文是介绍C++的技术文章,假定读者对于C++有比较深入的认识,同时也需要一些汇编知识。 本文我们将转载 2014-09-10 14:36:06 · 423 阅读 · 0 评论 -
Linux内存管理机制控制--mallopt,避免大量小内存不回收问题
http://blog.csdn.net/wscdylzjy/article/details/44244413一.http://blog.sina.com.cn/s/blog_4673e6030101haxg.html最近使用ACE的Message_Block时发现,程序运行一段时间之后内存越吃越多,即便没有请求,内存也不会下降。在使用 valgrind 排除内转载 2017-01-22 13:55:59 · 2775 阅读 · 0 评论 -
拷贝构造函数浅拷贝深拷贝
(1)函数的参数为类对象且参数采用值传递方式;(2)将类对象做为函数的返回值。转载 2015-08-19 16:13:54 · 387 阅读 · 0 评论 -
c++单例模式线程安全
http://www.cnblogs.com/ccdev/archive/2012/12/19/2825355.html废话不多说,常用的代码积淀下来。一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.使用dou转载 2015-10-10 17:12:10 · 378 阅读 · 0 评论 -
c++的this指针与空指针类成员函数访问
http://blog.csdn.net/justaipanda/article/details/8137435我们知道,在C++的非静态成员函数中,有一个隐含的参数,即this指针,利用它,我们可以访问相应对象的数据成员,那么究竟this指针是如何作用的呢?下面先来看一个例子。有下面的一个简单的类:[cpp] view plaincopyclass CNu转载 2015-10-10 17:28:53 · 461 阅读 · 0 评论 -
C++ Explicit Constructors(显式构造函数)
http://www.cnblogs.com/xudong-bupt/p/3671972.htmlC++ 为类(Class)提供了许多默认函数。如果自己没有申明,编译器会为我们提供一个copy构造函数、一个copy assignment操作符和一个析构函数。此外,如果没有申明任何构造函数,编译器会为我们申明一个default构造函数。很像下面的Empty类:1 clas转载 2015-08-27 11:48:55 · 469 阅读 · 0 评论 -
c++读取16进制文件
http://www.cnblogs.com/xudong-bupt/p/3730150.html1.为什么有这种需求 因为有些情况需要避免出现乱码。不管什么编码都是二进制的,这样表示为16进制就可以啦。2.如何读取16进制文件 最近编程用这一问题,网上查了一下,感觉还是自己写吧。 16进制数据一般是:text=0x340xb5...,就是0x开头,之后是两个转载 2015-08-27 11:44:26 · 4143 阅读 · 0 评论 -
swtich与if else是否能作用在byte上,作用在long上,作用在String上?
http://blog.csdn.net/kobejayandy/article/details/9286579http://blog.csdn.net/kehui123/article/details/5298337switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。转载 2015-08-23 22:37:41 · 488 阅读 · 0 评论 -
C++中头文件相互包含
C++中头文件相互包含的几点问题一、类嵌套的疑问C++头文件重复包含实在是一个令人头痛的问题,前一段时间在做一个简单的数据结构演示程序的时候,不只一次的遇到这种问题。假设我们有两个类A和B,分别定义在各自的有文件A.h和B.h中,但是在A中要用到B,B中也要用到A,但是这样的写法当然是错误的:classB;classA{public:Bb;};c转载 2015-08-24 08:30:51 · 454 阅读 · 0 评论 -
父类转子类,c++对象布局
TextView *textview = (TextView*)v.get(); sp chars = textview->getText(); sp str = chars->toString(); android::sp str = static_cast((static_cast(v.get()))->getTex原创 2014-10-20 15:22:38 · 766 阅读 · 0 评论 -
定位new表达式
1.经典例子#include #include const intchunk = 16;class Foo{public :int val( ) { return _val; }Foo( ) { _val = 0; }private :int_val;};//预分配内存,但没有Foo对象char*buf = new char[ sizeof(Fo转载 2014-06-05 09:49:29 · 591 阅读 · 0 评论 -
c++显示类型转换
C++primer第五章里写了编译器隐式执行任何类型转换都可由static_cast显示完成;reinterpret_cast通常为操作数的位模式提供较低层的重新解释1、C++中的static_cast执行非多态的转换,用于代替C中通常的转换操作。因此,被做为显式类型转换使用。比如:123inti;floatf=166.71;i=转载 2014-06-04 10:02:27 · 471 阅读 · 0 评论 -
共享内存的编程模型
http://blog.csdn.net/lux_veritas/article/details/119340831.什么是共享内存的编程模型?2.共享内存有哪几种实现方式?2.1 mmap的实现方式2.2 System V API2.3 POSIX API3. 深入分析4. 总结5. References转载 2015-08-27 22:42:03 · 614 阅读 · 0 评论 -
C++ Jsoncpp源代码编译与解析Json
http://www.cnblogs.com/xudong-bupt/p/3696329.html1.Json 数据表示方式介绍 这个可以看之前的一个文章里面有说明:Java解析(读取)Json数据2.C++ Jsoncpp2.1 Jsoncpp介绍 (1)JsonCpp主要包含三种类型的class:Value Reader Writer; Json:转载 2015-08-27 11:46:08 · 547 阅读 · 0 评论 -
c++多态机制详细分析以及c++内存对象布局
http://blog.csdn.net/zyq0335/article/details/76574651 什么是多态?多态性可以简单的概括为“1个接口,多种方法”,在程序运行的过程中才决定调用的机制程序实现上是这样,通过父类指针调用子类的函数,可以让父类指针有多种形态。2 实现机制举一个例子:#include class animal{pu转载 2015-08-14 20:55:39 · 419 阅读 · 0 评论 -
c语言指针和引用实现原理深入分析
http://blog.csdn.net/listening_music/article/details/6921608引用底层实现也是采用指针,其实和指针一样是需需要分配空间的,只不过编译器掩盖了下面用通俗易懂的话来概述一下:指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如co转载 2015-09-19 23:07:27 · 1995 阅读 · 3 评论 -
c语言零长数组及对数组名的理解
http://blog.csdn.net/yby4769250/article/details/7294696在标准C和C++中0长数组如charArray[0]是不允许使用的,因为这从语义逻辑上看,是完全没有意义的。但是,GUN中却允许使用,而且,很多时候,应用在了变长结构体中,如:StructPacket{Int state;Int le转载 2015-09-19 22:39:25 · 411 阅读 · 1 评论 -
C++模板编程中的Traits技术
http://blog.csdn.net/buleriver/article/details/5711076由于C++不支持type_of,所以Traits技术,实际上就是通过通过模板中的类型推导机制,获取到变量的类型,以其在编译器确定函数的调用。STL中的迭代器就广泛的运用到该技术。下面是一个简单的例子:凡是一个迭代器,我们总是希望能够知道它所指的数据的数据类型,我们可以这样做:转载 2015-09-08 11:05:02 · 393 阅读 · 0 评论