智慧的老鸟

一个程序员需要有一棵Gank的心,Dota能培养我。

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

随笔分类 -  c++

摘要:vector循环删除的时候,erase(it)会返回下一个迭代器的地址,保险的做法是赋值给it 即 it= erase(it)这是vector的内部机制所造成的,所以对vector进行erase的时候特别注意迭代器是否会失效!map则可以直接erase(it++);vector和map都不能将it++写在for循环中,而在循环体内erase(it)!voidmain(){ vector<int> v; v.push_back(1); v.push_back(2); v.push_back(4); v.push_back(3); v.push_back(6); v.push_back 阅读全文
posted @ 2013-01-23 17:16 智慧的老鸟 阅读(1933) 评论(0) 推荐(0) 编辑

摘要:一,生成动态链接库//DynamicLib.h#ifndef_DYNAMIC_LIB_INCLUDE_H_#define_DYNAMIC_LIB_INCLUDE_H_#ifdef__cplusplusextern"C"{#endif_declspec(dllexport)intadd(inta,intb);_declspec(dllexport)intsub(inta,intb);#ifdef__cplusplus};#endif#endif------------------------------------------------------//DynamicLib. 阅读全文
posted @ 2012-11-17 19:11 智慧的老鸟 阅读(717) 评论(0) 推荐(0) 编辑

摘要:一.生成静态lib#ifdef_STATIC_LIB_H_#define_STATIC_LIB_H_#ifdef __cplusplusextern"C"{#endifintadd(inta,intb);intsubtract(inta,intb);#ifdef __cplusplus{#endif#endif--------------------------------------#include"StaticLib.h"intadd(inta,intb){returna+b;}intsubtract(inta,intb){returna-b;}二. 阅读全文
posted @ 2012-11-17 19:11 智慧的老鸟 阅读(407) 评论(0) 推荐(0) 编辑

摘要:1关键字inline:调用Inline函数直接嵌入代码,避免因为调用而造成的开销。注意,内联函数应该放入头文件中。extern:使用时候,也必须声明,应用应在cpp文件中。const:A.h中定义的全局变量inta;能被别的cpp文件访问,只要externinta;如果不想被访问,则定义成constinta;&引用:引用是一种复合类型,必须用对象初始化,是对象的别名。int&i=10;errorint&i=j;rightconst&是指向const对象的引用。constinti=10;constint&j=i;rightint&k=i;error 阅读全文
posted @ 2012-11-17 19:10 智慧的老鸟 阅读(266) 评论(0) 推荐(0) 编辑

摘要:问题:set是一个自动有序的集合容器,这是set的一个最实惠的性质,从小到大,只要你插入进去,就有序了。但是,如果你不想要这个顺序呢,是不是可以人为控制set容器的元素顺序呢?答案是,可以的,因为stl也是程序员设计的。首先看stl的模板构造函数explicit set ( const Compare& comp = Compare(), const Allocator& = Allocator() );templateset ( InputIterator first, InputIterator last, const Compare& comp = Compare 阅读全文
posted @ 2012-10-30 08:14 智慧的老鸟 阅读(1268) 评论(0) 推荐(0) 编辑

摘要:问题:stl中的vector容器常常造成删除假象,这对于c++程序员来说是极其讨厌的,《effective stl》大师已经将之列为第17条,使用交换技巧来修整过剩容量。内存空洞这个名词是网上的学者给出的,我觉得用来描述这个基本现象特别容易提醒自己vector删除的这个陷阱。首先给出一段代码:35 void testvector()36 {38 vector v;39 v.push_back(1);40 v.push_back(2);41 cout << "v size = " << v.size() << " v capaci 阅读全文
posted @ 2012-10-29 12:05 智慧的老鸟 阅读(6249) 评论(0) 推荐(0) 编辑

摘要:STL用法很通俗易懂,但是,想深入了解STL源码的实现,以为以后设计自己的模板类。首先应了解和掌握模板类的设计方法,然后推荐《C++模板元编程》、《STL源码剖析》两本书,博大精深的STL!这些书电子版在jask中都能下到。1. 类模板和STLSTL是C++的标准模板库,其源码编程完全依赖模板实现。类模板是能根据不同参数建立不同类型成员的类。2. 类模板的定义template<模板类参数>class 类名{成员名;};根据需要参数可以多个。3. STL是模板类应用的一个最好的开源实例在掌握STL的基本用法的基础上去理解模板类的设计会更加深刻,在掌握模板类设计的基础上,可以设计出自己 阅读全文
posted @ 2012-10-23 13:38 智慧的老鸟 阅读(426) 评论(0) 推荐(0) 编辑