![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术类
文章平均质量分 56
lollipop_jin
这个作者很懒,什么都没留下…
展开
-
迭代器逆向后的移位
在《c++标准程序库》中讲述的将迭代器逆向后的移位操作,这和我们正常的思维有点出入,在程序设计过程中需要额外注意:比如有如下的程序,使用正向的迭代器pos初始化了一个反向迭代器,*pos返回的是5,按正常思维我们希望*rpos返回的也是5,但是结果*rpos返回的是4。 for(int i=1;i<=9;i++) { coll.push_back(i);原创 2011-12-09 09:20:45 · 946 阅读 · 0 评论 -
c++ struct和class的区别
在c++中用class和struct关键字定义类的唯一差别在于默认访问级别:默认情况下,struct的成员是public的,但是class的成员是private的。原创 2012-06-27 14:27:37 · 633 阅读 · 0 评论 -
数据结构 —— 堆(摘自严蔚敏《数据结构》)
堆是一颗完全二叉树,并且是完全二叉树中所有非终端节点的值均不大于(或不小于)其左、右孩子节点的值。堆的性质: 第一个元素总是最大或者最小 可以在对数时间内增加或者删除一个元素若在输出堆顶元素之后,使得剩余的n-1个元素的序列又重新建成一个堆,则得到n个元素中的次小值。如此反复,边能得到一个有序序列,这个过程称之为堆排序。实现堆排序需要解决两个问题:(1)如何由一个无序序列建成一个翻译 2012-07-10 16:23:15 · 1722 阅读 · 0 评论 -
在编写构造函数时建议使用构造函数初始化列表
c++中构造函数初始化式有两种方式:使用构造函数初始化列表进行初始化 省略初始化列表并在构造函数体内对数据成员进行赋值达到初始化的目的除了两个例外,对非类类型的数据成员进行赋值或者使用初始化列表进行初始化在性能和结果上都是等价的。例如:class ConstRef{public : ConstRef(int ii);private : int i;原创 2012-07-11 16:05:30 · 480 阅读 · 0 评论 -
c++ extern 攻略
当你想在另外的模块中(b)使用本模块(a)定义的全局变量,你应该想到extern关键字:在本模块的头文件中加上如下语句: extern int c;(定义仍然在模块a的.cpp文件中不变),然后在b模块中加上include "a.h"或者是 你在b模块中也加上extern int c;语句,这样的话在b模块中找不到的定义,自然会去其他的模块中查找定义。1 基本解释:extern可以转载 2012-12-17 19:56:31 · 594 阅读 · 0 评论 -
const指针和指向const对象的指针
1.有关const指针和指向const对象指针的一道题:首先要说明的是怎么来判断const指针还是指向const的指针:如果const后面跟的是类型,那么const是用来修饰对象的,所以它是指向const对象的指针但是如果const后面跟的是指针本身,那么const是用来修饰指针的,所以它是const指针可以这么理解,const在*号左边,那么它修饰指向const对象的指针,但是c原创 2011-12-01 16:26:26 · 482 阅读 · 0 评论 -
c++类大小(涵盖继承 虚继承 虚函数表)
涉及到c++中求类大小时需要特别注意一下几点1.为类的非静态成员数据的类型大小之和.2.有编译器额外加入的成员变量的大小,用来支持语言的某些特性(如:指向虚函数的指针、虚继承、多重继承).3.为了优化存取效率,进行的边缘调整.4. 与类中的构造函数,析构函数以及其他的成员函数无关. 5. 私有继承,会去继承之前的私有成员变量么? 会...在内存中仍然分配原创 2013-01-01 12:37:02 · 3245 阅读 · 3 评论 -
C和C++中存储区域详解(栈、堆、全局...)
一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放转载 2012-12-18 14:48:32 · 7697 阅读 · 0 评论 -
auto_ptr、shared_ptr、weak_ptr、scoped_ptr用法小结
auto_ptr auto_ptr是现在标准库里面一个轻量级的智能指针的实现,存在于头文件 memory中,之所以说它是轻量级,是因为它只有一个成员变量(拥有对象的指针),相关的调用开销也非常小。 下面的代码来自于VC++ 8.0里面的源码: 里面有个auto_ptr_ref的数据结构,我们可以把它忽略,这个只是内部使用的代理结构,用于一些隐式的const变化转载 2013-01-14 09:05:10 · 14090 阅读 · 0 评论 -
计算下一个全排列(以STL中的next_permutation为例)
算法理解:(怎么样获得下一个全排列次序)根据标记从后往前比较相邻两数据,若前者小于(默认为小于)后者,标志前者为X1(位置PX)表示将被替换,再次重后往前搜索第一个不小于X1的数据,标记为X2。交换X1,X2,然后把[PX+1,last)标记范围置逆。完成。int main(){int a[] = {3,1,2};do{ cout }while (next_转载 2012-07-10 10:54:21 · 790 阅读 · 0 评论 -
const 引用——c++ primer 学习笔记
1.概念:const 引用指的是指向const对象的引用。2.const引用的右值可以是常数,但是普通的引用是不行的。 int &re1 = 42(x)const int &re2 = 42 (正确)3.先看一个可行的语句:double dval = 3.14; double dval = 3.14;const int &原创 2012-06-27 11:07:42 · 416 阅读 · 0 评论 -
STL的逆向迭代器
本文转自:http://zhouruijun163.blog.163.com/blog/static/10771562008111103635444/ 在学习STL中关于迭代器reverse_iterator转换,发现个有趣的问题,如下例子。#include iostream>#include algorithm>#include vector>转载 2012-07-09 15:43:06 · 1870 阅读 · 0 评论 -
c++primer之sizeof
使用sizeof的结果部分地依赖所涉及的类型:对char类型或值为char 类型的表达式做sizeof操作保证得到1对引用类型做sizeof操作将返回存放此引用类型对象所需要的内存空间的大小。也就是被引用的对象占用对少内存,引用就占用多少内存对指针做sizeof操作将返回存放指针所需要的内存大小,如果需要获取该指针所指向的对象的大小,则必须对该指针进行解引用。对数组做sizeof操转载 2012-07-03 17:00:50 · 717 阅读 · 0 评论 -
c++默认实参
转自:http://blog.csdn.net/chollima/article/details/3454839最近在看关于函数的一部分,其中有这两句话很吸引我,一是:既可以在函数声明中也可以在函数定义中指定默认实参,但是在一个文件中,只能为一个形参指定默认实参一次;二是:如果在函数定义的形参表中提供默认实参,那么只有在包含该函数定义的源文件中调用该函数时,默认实参才是有效的。细细一想才明转载 2012-07-04 15:20:52 · 4612 阅读 · 0 评论 -
重载和const形参
仅当形参是引用或者指针的时候,形参是否为const才能有影响例如: Record lookup ( Phone);Record lookup ( const Phone); 这里是对同一个函数的两次申明,而不是函数重载,因为形参不是引用也不是指针,仅仅差别是const,相当于这个const在这里起不到任何作用但是 Record lookup(Account &);Record原创 2012-07-04 17:44:24 · 799 阅读 · 0 评论 -
输出缓冲区的管理
缓冲区类型有三种:全缓冲(比如说文件),行缓冲(比如说终端),无缓冲 (比如说cerr)下面几种情况将导致缓冲区的内容被刷新,写入到真实的输出设备或者文件中去(1)程序正常结束。作为main返回工作的一部分,将清空所有输出缓冲区。(2)在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新。(3)用操纵符显示地刷新缓冲区,例如行结束符endl(4)在每原创 2012-07-05 10:02:45 · 573 阅读 · 0 评论 -
省略符形参
在c++ primer书上看到标题为“含有可变形参的函数”的章节,内容如下: 省略符形参有下列两种形式: void foo ( parm_list , ...); void foo ( ... ); 第一种形式为特定数目的形参提供了声明。在这种情况下,当函数被调用时,对于与显示声明的形参相对应的实参进行类型检查,而对于与省略符对应的实参则暂停类型检查。在第一钟形式中,转载 2012-07-04 10:40:32 · 4488 阅读 · 1 评论 -
vector的容量进行缩减
在c++primer 上看到vectors的容量不会进行缩减:即便是删除元素,其references、pointers、iterators也会继续有效,继续指向动作发生前的位置。但是安插操作可能使这些references、pointers、iterators失效(因为安插可能导致内存的重新分配)。有一个间接缩减vector容量的小窍门:采用swap让两个同期交换内容后,两者的容量也会互换:原创 2012-07-07 20:25:20 · 2521 阅读 · 0 评论 -
云本质的思考——摘至《大话云存储II》
今天在看冬瓜头的《大话云存储II》时看到它对云本质的论道,感觉特别形象生动,摘抄下来,和大家分享。既然用户最终需要的不是服务器也不是一堆一堆的硬盘也不是机房也不是整天吹冷气的空调,他们只不过想要自己的数据被展现出来,看到生产的结果并存储起来备用,就这样嘛。好吧,你不喜欢机房,也不喜欢看到一堆一堆的机柜,你不愿意看到你花很多钱购买的服务器,在系统不繁忙的时候,CPU的使用率机会等于0,磁盘IO利翻译 2012-06-25 17:06:16 · 1355 阅读 · 0 评论 -
fork_子进程会复制父进程的缓存空间
前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?#include #include #include int main(void){ int i; for(i=0; i<2; i++){ fo转载 2013-04-08 18:57:39 · 3995 阅读 · 1 评论