文章分类 - C++基本语法
摘要:概括的说,关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效率的汇编代码。
阅读全文
摘要:转自:http://blog.csdn.net/skyremember/article/details/2941076
STL中map与hash_map容器的选择
这篇文章来自我今天碰到的一个问题,一个朋友问我使用map和hash_map的效率问题,虽然我也了解一些,但是我不敢直接告诉朋友,因为我怕我说错了,通过我查询一些帖子,我这里做一个总结!内容分别来自
alvin_lee ,codeproject,codeguru.baidu等等!
先看看alvin_lee 朋友做的解析,我觉得还是很正确的,从算法角度阐述了他们之间的问题!
阅读全文
摘要:转自:http://www.cppblog.com/guojingjia2006/archive/2008/01/12/41037.aspx
说来惭愧,使用了很久Visual Stdio 2003了,只知道MFC升级到了7.0,ATL也升级到了7.0,对于这两个经典的类库做了一些研究,但一直没有注意C++标准库的变化。
今天尝试的使用了stdext::hash_map这个库,果然不错。下面写下一些心得。
hash_map类在头文件hash_map中,和所有其它的C++标准库一样,头文件没有扩展名。如下声明:
#include
using namespace std;
using namespace stdext;
阅读全文
摘要:static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
阅读全文
摘要:mapData.erase(i); // erase以后 i已经失效,不能再用i++;
i++;
那么erase操作直接让i失效,对失效的i进行加一操作也是失效的。
阅读全文
摘要:转自:http://blog.csdn.net/bichenggui/article/details/4215344
Map是一种关联容器,用来存储key-value数据。其中的key是用来查找的关键字,value是实际存放的值。
一个特定的关键字只能与一个唯一的值相联系。map是由一对一对的键值(key/value)所组成的排序结构体,
键值是读一无二的(unique)的。
map通常是以平衡二叉查找树来实现的,因此map对插入,删除,查找能保证log(N)的时间复杂度。对于
海量的数据的插入和查询,map是一个不错的选择。
本文将对map的常见操作进行讲解。不当之处,欢迎批评指正(bicheng.gui@gmail.com).
阅读全文
摘要:c++八大金刚,学习C++的经典教材
阅读全文
摘要:STL之父访谈录 1995年3月,Dr.Dobb's Journal特约记者, 著名技术书籍作家Al Stevens采访了STL创始人Alexander Stepanov. 这份访谈纪录是迄今为止对于STL发展历史的最完备介绍, 侯捷先生在他的STL有关文章里 推荐大家阅读这篇文章.
阅读全文
摘要:Memory中存储的是补码,是根据存入的具体数据的值进行转换为二进制后的形式,如果超过该数据类型范围则不知道存的形式是什么了,这个应该是编译器相关的,对越界数的处理方式;
(无论存入的时候是用什么进制表示的,在这里注意+/-单目运算符的作用)无论要做什么运算都要先看这个数存入内存是什么样子的;
类型提升/截断的时候都是对内存中数据的操作,提升的时候就是需要进行扩位:对无符号数扩位的时候直接把扩出的位上补零即可(因为unsigned都是正数);
有符号数进行扩位,则进行符号位扩展(sign extension)如果是整数即原最高位是零则补零,如果是负数即原最高位是1则全补1;
阅读全文
摘要:在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别
阅读全文
摘要:智能指针(auto_ptr) 这个名字听起来很酷是不是?其实auto_ptr 只是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势,但也有其局限。本文总结的8个问题足以涵盖auto_ptr的大部分内容。
阅读全文
摘要:C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。
多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。
阅读全文
摘要:★抽象类:一个类可以抽象出不同的对象来表达一个抽象的概念和通用的接口,这个类不能实例化(创造)对象。
★纯虚函数(pure virtual):在本类里不能有实现(描述功能),实现需要在子类中实现。
阅读全文
摘要:抽象类是一种特殊的类,它是为了抽象和设计的目的为建立的,它处于继承层次结构的较上层。
C++虚继承、虚基类、虚函数与纯虚函数的概念和引用
⑴抽象类的定义:
称带有纯虚函数的类为抽象类。
⑵抽象类的作用:
抽象类的主要作用是将有关的操作作为结果接口组织在一个继承层次结构中,由它来为派生类提供一个公共的根,派生类将具体实现在其基类中作为接口的操作。所以派生类实际上刻画了一组子类的操作接口的通用语义,这些语义也传给子类,子类可以具体实现这些语义,也可以再将这些语义传给自己的子类。
(3)使用抽象类时注意:
抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。如果派生类中没有重新定义纯虚函数,而只是继承基类的纯虚函数,则这个派生类仍然还是一个抽象类。如果派生类中给出了基类纯虚函数的实现,则该派生类就不再是抽象类了,它是一个可以建立对象的具体的类。
抽象类是不能定义对象的。
阅读全文
摘要:最近看许多公司笔试都考这几方面的内容,于是乎就搜索了一下,把这几个知识点总结以下,以增强基础,以及应付未来的笔试
阅读全文
摘要:extern "C"的双重含义
1.被它修饰的目标是“extern ”;
2.被它修饰的目标是“C ”。
让我们来详细解读这两重含义。
被extern "C"限定的函数或变量是extern类型的。
阅读全文
摘要:关于extern “C”的来龙去脉,摘录的三篇网友文章
阅读全文
摘要:2013-07-31 22:12:5822:12:58转自:百度空间忽然之间2010-05-15 01:22链接指示: extern "C" C和C++混合编程问题接上,继续对笔试题进行分析分析以下一段代码:/*=======sum.h=========*/#ifndef SUM_H#define SUM_H#include int sum(int a,int b);#endif;/*=======sum.c=========*/#include "sum.h"int sum(int a,int b){int c=a+b;return c;}/*====
阅读全文
摘要:不久前有人在面试的时候被问及面向对象和面向过程的本质区别是什么?对于这个问题小生
也没有做过多的思考,今天在此做一个总结,探求一些面向对象和面向过程本质的区别在哪里。
阅读全文
摘要:本文写给C或C++语言初学者。
论坛中,常有初学者问“学C++语言前是否要先学C?”。我认为这是个伪问题。问题本身的答案并不是提问人真正想要的。
阅读全文