不破不立

码农一枚

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  C++

摘要:下面材料整理自Internet&著作。 STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。1.list,set,map容器 ... 阅读全文
posted @ 2015-10-30 16:00 jackjoe 阅读(20971) 评论(3) 推荐(3) 编辑

摘要:左值右值是表达式的属性,该属性称为 value category。按该属性分类,每一个表达式属于下列之一:lvalueleft value,传统意义上的左值xvalueexpiring value, x值,指通过“右值引用”产生的对象prvaluepure rvalue,纯右值,传统意义上的右值... 阅读全文
posted @ 2015-09-17 19:10 jackjoe 阅读(1386) 评论(0) 推荐(0) 编辑

摘要:1.基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用: A. 当它与"C"一起连用时,如: extern "C" void fun(in... 阅读全文
posted @ 2015-09-09 11:27 jackjoe 阅读(474) 评论(0) 推荐(1) 编辑

摘要:#error命令是C/C++语言的预处理命令之一,当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息。语法: #error [用户自定义的错误消息]注:上述语法成份中的方括号“[]”代表用户自定义的错误消息可以省略不写。举例1:#error Sorry,an error ha... 阅读全文
posted @ 2015-09-08 16:54 jackjoe 阅读(2620) 评论(0) 推荐(0) 编辑

摘要:1.一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: 1 #include 2 #include 3 using namespace std; 4 #define STR(s) #s 5 #define CONS(a,b) int(a##e##b) 6 int... 阅读全文
posted @ 2015-09-08 12:10 jackjoe 阅读(977) 评论(0) 推荐(0) 编辑

摘要:1.简介 该算法用于实行容器元素的变换操作。有如下两个使用原型,一个将迭代器区间[first,last)中元素,执行一元函数对象op操作,交换后的结果放在[result,result+(last-first))区间中。另一个将迭代器区间[first1,last1)的元素*i,依次与[first2,... 阅读全文
posted @ 2015-08-21 17:46 jackjoe 阅读(1345) 评论(0) 推荐(0) 编辑

摘要:1.unary_function和binary_function介绍1.1 unary_function介绍 unary_function可以作为一个一元函数对象的基类,它只定义了参数和返回值的类型,本身并不重载()操作符,这个任务应该交由派生类去完成。1.2 unary_function源码1 ... 阅读全文
posted @ 2015-08-18 11:37 jackjoe 阅读(5623) 评论(0) 推荐(1) 编辑

摘要:1.引言 bind1st和bind2nd函数用于将一个二元函数对象(binary functor,bf)转换成一元函数对象(unary functor,uf)。为了达到这个目的,它们需要两个参数:要转换的bf和一个值(v)。可能这么解释以后大家还不是很清楚,那么就说点白话吧。我们在做比较的时候所写... 阅读全文
posted @ 2015-08-17 17:13 jackjoe 阅读(3062) 评论(0) 推荐(0) 编辑

摘要:1.引言 先看一个STL中for_each的用法: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 class Test 8 { 9 public:10 Test(in... 阅读全文
posted @ 2015-08-14 12:26 jackjoe 阅读(2712) 评论(0) 推荐(1) 编辑

摘要:1.为什么static类外初始化不需要static关键字答:因为类外static变量或函数表示限定在此源文件中才能使用,而类中的static变量或函数表示由本类及其所有对象共享,如果在类外初始化或定义类的成员变量或函数加上static关键字,会引起两个含义上的语义歧义.2.为什么析构函数要被定义为虚... 阅读全文
posted @ 2015-08-11 12:04 jackjoe 阅读(503) 评论(0) 推荐(0) 编辑

摘要:我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类... 阅读全文
posted @ 2015-08-08 01:52 jackjoe 阅读(807) 评论(1) 推荐(0) 编辑

摘要:隐式转换(implicit conversion)short a=2000;int b;b=a;short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到long long,int到floa... 阅读全文
posted @ 2015-08-08 01:28 jackjoe 阅读(1892) 评论(0) 推荐(0) 编辑

摘要:一、介绍什么是字节对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。字节对齐的原因和作用 ... 阅读全文
posted @ 2015-08-08 01:01 jackjoe 阅读(2966) 评论(0) 推荐(1) 编辑

摘要:C++ How to Program, 7/e (C++大学教程 第7版) 英文原版 全彩页C++大学教程(第五版)中文版高清PDF下载C++大学教程 第五版 (C++ How to Program, 5/e) 英文版C++程序设计语言(特别版) 中文版C++程序设计原理与实践(中文高清版) |Pr... 阅读全文
posted @ 2015-08-07 16:50 jackjoe 阅读(2778) 评论(0) 推荐(1) 编辑

摘要:1.虚函数的定义 虚函数必须是类的非静态成员函数(且非构造函数),其访问权限是public(可以定义为private or proteceted, 但是对于多态来说,没有意义。),在基类的类定义中定义虚函数的一般形式: virtual 函数返回值类型 虚函数名(形参表) { 函... 阅读全文
posted @ 2015-08-06 17:26 jackjoe 阅读(996) 评论(0) 推荐(0) 编辑

摘要:今天在写代码时发现对继承后的函数访问权限不太清楚,于是自己做了个测试:1.头文件(test.h) 1#include 2usingnamespacestd; 3 4 class A{ 5 private: 6 void print(){ 7 cout print(... 阅读全文
posted @ 2015-08-06 12:00 jackjoe 阅读(916) 评论(0) 推荐(0) 编辑

levels of contents
点击右上角即可分享
微信分享提示