C++基础
文章平均质量分 55
Linux菜_鸟
努力学习Linux中
展开
-
switch与ifelse的效率问题
switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。 具体地说,switch...case会生成一份大小(表项数)为转载 2013-09-09 18:57:55 · 961 阅读 · 0 评论 -
基于C++浮点数(float、double)类型数据比较与转换的详解
浮点数在内存中的存储机制和整型数不同,其有舍入误差,在计算机中用近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。所以浮点数在运算过程中通常伴随着因为无法精确表示而进行的近似或舍入。但是这种设计的好处是可以在固定的长度上存储更大范围的数。1、将字符串转换为float、double过程转载 2013-09-12 10:30:52 · 1954 阅读 · 0 评论 -
STL容器知识积累
1.对STL中的容器,可以存储三种类型数据:内建类型,自定义对象,自定义对象的指针。其中如果存储自定义对象的话由于STL容器的工作是建立在拷贝的基础上的这时需要考虑对象拷贝的时间消耗,如果拷贝效率不高的话就采用对象指针的方法,并且注意,这里是可以使用引用计数型智能指针的,就解决了内存管理的问题。原创 2013-11-23 20:52:52 · 814 阅读 · 0 评论 -
禁止使用拷贝构造函数和赋值函数操作的宏定义
#defineDISALLOW_COPY_AND_ASSIGN(TypeName) \ TypeName(const TypeName&); void operator=(const TypeName&) 使用方法:class Foo{ public: explicit Foo(int f); privat转载 2013-11-26 10:36:39 · 1415 阅读 · 0 评论 -
C++中函数对象(仿函数)的使用
今天在学习Qt中QTableWidget中对项目排序过程中遇到了函数对象的使用:void Spreadsheet::sort(const SpreadsheetCompare &compare){ QList rows; QTableWidgetSelectionRange range = selectedRange(); int i; for (i = 0;转载 2013-12-01 20:07:55 · 783 阅读 · 0 评论 -
C与C++中的enum类型使用
1.enum常量与enum变量对于enum类型,定义enum时在{}中定义的属于enum常量,这些量不可以被更改,同时可以在程序中任意地方声明一个enum变量,但enum变量必须用enum常量进行赋值。enum myenum{first,//enum常量second//enum常量};.......enum enumVar = first;//enum变转载 2013-12-02 23:27:57 · 15360 阅读 · 3 评论 -
C++中的“异常”知识积累
一、什么是异常处理 一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这些错转载 2013-12-12 20:40:30 · 712 阅读 · 0 评论 -
C++11引入智能指针std::unique_ptr
我们知道auto_ptr通过复制构造或者通过=赋值后,原来的auto_ptr对象就报废了.所有权转移到新的对象中去了.而通过shared_ptr可以让多个智能指针对象同时拥有某一块内存的访问权.但假如我们不希望多个内存块被多个智能指针对象共享,同时又不会像auto_ptr那样不知不觉的就让原来的auto_ptr对象失效,可咋整呢?这个时候就要使用unique_ptr了,顾名思义嘛,uniq转载 2014-04-06 14:07:14 · 7818 阅读 · 1 评论