
C++
ccj_zj
这个作者很懒,什么都没留下…
展开
-
智能指针简介
智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函原创 2017-07-12 18:44:59 · 285 阅读 · 0 评论 -
C++仿函数
先考虑一个简单的例子:假设有一个vector,你的任务是统计长度小于5的string的个数,如果使用count_if函数的话,你的代码可能长成这样:1 bool LengthIsLessThanFive(const string& str) {2 return str.length()5; 3 }4 int res=count_if(vec.begin(), vec.转载 2017-08-06 22:00:53 · 252 阅读 · 0 评论 -
Placement New
placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t, void *p ) throw() { return p; }首先我们区分下几个容易混淆的关键词:new、operator n转载 2017-08-03 09:20:40 · 334 阅读 · 1 评论 -
void及void指针含义的深刻解析
转载地址:http://blog.youkuaiyun.com/geekcome/article/details/6249151void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void转载 2017-07-09 23:11:18 · 222 阅读 · 0 评论 -
STL源码剖析——list
相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。 list不仅是一个双向链表,而且还是一个环状双向链表。另外,还有一个重要性质,插入操作和接合操作都不会造成原有的list迭代器失效,这在vecto原创 2017-07-05 13:01:21 · 379 阅读 · 0 评论 -
STL源码剖析——vector
Vector与array非常相似,两者的唯一差别在于空间的运用的灵活性。Array是静态空间,一旦配置了就不能改变。Vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素。 Vector的数据结构Vector所采用的数据结构非常简单:线性连续空间。它以两个迭代器start和finish分别指向配置得来的连续空间中目前已使用的范围,并以迭代器end_of_stor原创 2017-06-27 13:09:29 · 282 阅读 · 0 评论 -
《effective c++》笔记一
条款1:视C++为一个语言联邦条款2:尽量以const,enum,inline替换#define对于单纯常量,最好以const对象或enum替换#dedine对于形似函数的宏,最好改用inline函数替换#define条款3:尽可能使用const将某些东西声明为const可帮助编译器侦测出错误用法。const可被施加于任何作用域内的对象,原创 2017-06-12 20:24:54 · 352 阅读 · 0 评论 -
extern "C" 简介
最近要打包实验室的一个项目,里面源码出现extern “C”, 编译时出错了,所以来学习一下。原文链接:C++项目中的extern “C” {}1、#ifdef _cplusplus/#endif _cplusplus及发散在介绍extern “C”之前,我们来看下#ifdef _cplusplus/#endif _cplusplus的作用。很明显#ifdef/#endif、#ifndef/#end转载 2017-06-08 16:52:59 · 398 阅读 · 0 评论 -
STL源码剖析——空间配置器
STL空间配置器:主要分三个文件实现。1、stl_construct.h 。 这里定义了全局函数construct()和destroy(),负责对象的构造和析构。2、stl_alloc.h。文件中定义了一、二两级配置器,彼此合作,配置器名为alloc。3、stl_uninitialized.h。 这里定义了一些全局函数,用来填充(fill)或复制(copy)大块内存数据。原创 2017-07-15 12:41:32 · 273 阅读 · 0 评论 -
const作用
一 const基础如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; const int* a = &b; [1] int const *a = &b; [2] int* const a = &b;转载 2017-08-06 21:44:14 · 219 阅读 · 0 评论