
C++
文章平均质量分 68
xiongping_
这个作者很懒,什么都没留下…
展开
-
std::nothrow
转载:http://blog.youkuaiyun.com/jfkidear/article/details/7990613std::nothrow在内存不足时,new (std::nothrow)并不抛出异常,而是将指针置NULL。对于比较健壮的代码来说,nothrow使用的情况比直接new多很多吧。直接new如果失败要抛出异常的,结果就是为了健壮性代码里到处都是try。所以一般转载 2015-11-05 14:22:09 · 661 阅读 · 0 评论 -
Boost 库 enable_shared_from_this 实现原理分析
使用情景:当类对象被 shared_ptr 管理时,需要在类自己定义的函数里把当前类对象作为参数传给其他函数时,这时需要传递一个 shared_ptr ,否则就不能保持 shared_ptr 管理这个类对象的语义(因为有一个 raw pointer 指向这个类对象,而 shared_ptr 对类对象的这个引用没有计数,很有可能 shared_ptr 已经把类对象资源释放了,而那个调用函数还在使转载 2016-06-07 16:41:47 · 577 阅读 · 0 评论 -
在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1
在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 一、编译安装gcc 4.8.11. 安装gcc和g++新安装的CentOS缺少编译环境,必须先安装旧版本的gcc, 然后再进行自举编译yum -y install gcc yum -y install gcc-c++2. 下载gcc 4.8.1源码包wget http://ftp.gnu.org转载 2016-08-19 16:14:55 · 1091 阅读 · 0 评论 -
Ubuntu 12.04 安装 gcc-4.8 及 gdb 7.6
为了使用C++ 11, 须安装 gcc-4.8 以上版本.按以下命令即可方便的安装 gcc-4.8 及 g++-4.8sudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt-get updatesudo apt-get install gcc-4.8sudo apt-get install g++-4.8安装转载 2016-08-19 16:16:48 · 4301 阅读 · 0 评论 -
使struct对象拥有可变大小的数组
结构体中最后一个元素是长度为0的数组在Linux源代码中,有很多的结构体最后都定义了一个元素个数为0个的数组,如/usr/include/linux/if_pppox.h中有这样一个结构体: struct pppoe_tag { __u16 tag_type; __u16 tag_len; char tag_data[0];转载 2016-12-12 10:16:43 · 4162 阅读 · 0 评论 -
STL 源码剖析笔记之仿函数
仿函数(functor)的概念在我们写代码时有时会发现有些功能实现的代码,会不断的在不同的成员函数中用到,但是又不好将这些代码独立出来成为一个类的一个成员函数。但是又很想复用这些代码。写一个公共的函数,可以,这是一个解决方法,不过函数用到的一些变量,就可能成为公共的全局变量,再说为了复用这么一片代码,就要单立出一个函数,也不是很好维护。这时就可以用仿函数了,写一个简单类,除了那些维护一个类原创 2016-12-16 16:09:21 · 432 阅读 · 0 评论 -
c++ list, vector, map, set 区别与用法比较
c++ list, vector, map, set 区别与用法比较List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,转载 2016-12-22 13:57:20 · 613 阅读 · 0 评论 -
GotW #89智能指针的一些建议
question:1.什么时候应该使用shared_ptr vs. unique_ptr? 列出尽可能多的注意事项。大师问题为什么你几乎总是使用make_shared来创建一个由shared_ptrs拥有的对象? 说明。为什么你几乎总是使用make_unique创建一个对象,最初由unique_ptr拥有? 说明。4.与auto_ptr有什么关系?翻译 2016-12-19 12:01:20 · 504 阅读 · 0 评论 -
C++大牛blog地址
Exceptional C++作者herbsutter blog:https://herbsutter.com/elements-of-modern-c-style/C++大牛pongbahttp://blog.youkuaiyun.com/pongbamuduo作者:陈硕http://blog.youkuaiyun.com/Solstice孟岩:http://blog.csdn.ne原创 2016-12-19 17:00:05 · 869 阅读 · 0 评论 -
C++ lambda
转载:http://blog.youkuaiyun.com/xuexiacm/article/details/39835085lambda表达式:[cpp] view plain copy [capture_block](parameters) mutable exception_specification->return_type{ body } l转载 2016-12-19 18:09:58 · 1467 阅读 · 0 评论 -
what to benefit from the C++14 Standard
转载:http://weibo.com/ttarticle/p/show?id=2309404029139492430854我同时也是哥伦比亚的客座教授,尽管我辞掉了Texas A&M的教职,但在校方坚持下,我现在还算是一名教授。好的,接下来我会简单介绍:我们希望从编程语言中获得什么,编程语言在开发环境中扮演者什么角色一个使用C+转载 2016-12-28 14:38:53 · 452 阅读 · 0 评论 -
C++遍历container删除需要注意地方
http://www.cppblog.com/Herbert/archive/2009/01/08/70479.htmlSTL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。 在使用 list、set 或 map遍历转载 2016-12-21 08:54:21 · 609 阅读 · 0 评论 -
C++ std::enable_if解析
引言今日在阅读LLVM相关源码时(如下所示),遇到了enable_if这个概念,以前从没有遇到过,这里做个小记。/*----------llvm/include/llvm/ADT/Hashing.h------------*//// \brief Compute a hash_code for any integer value.////// Note that this funct转载 2017-02-05 11:41:52 · 11166 阅读 · 0 评论 -
using namespace [ns]与 using [ns]区别
using namespace [ns]与 using [ns]区别using namespace [ns] 表示命名空间 [ns] 下所有的域变成可见的。如using namespace std;则代码中可以用cout如果是using [ns]的话,则只有ns是本身是可用的。对于ns下的域仍然必须使用 ns.xxx 如usi转载 2016-06-07 16:10:25 · 2088 阅读 · 1 评论 -
重载操作符operator详解
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,“功能”都是由函数实现的)。 一、为什么使用操作符重载?对于系统的所有操作符,一般情况下,只原创 2016-06-07 13:48:49 · 3182 阅读 · 0 评论 -
对象的赋值不使用拷贝而使用引用
对象的赋值不使用拷贝而使用引用:class yqueue_t{yqueue_t ();~yqueue_t ();void push ();void pop ()// Disable copying of yqueue.用引用yqueue_t (const yqueue_t&); const yqueue_t &operator = (c原创 2015-11-05 15:42:17 · 349 阅读 · 0 评论 -
C++ std::pair<>
C++ std::pair2013-07-12 21:56 11292人阅读 评论(0) 收藏 举报std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。例如std::pair 或者 std::pair等。pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。初始化一个pair可以使用构转载 2016-01-20 10:41:30 · 473 阅读 · 0 评论 -
std::list<>
list是一个双向链表,因此它的函数也都要从链表的角度来进行理解。 迭代器返回迭代器,和listbegin()end()返回反向迭代器,和listrbegin()rend() 返回第一个、最后一个元素front()back() 插入数据向链表头、尾插入元素push_front()push_back()向链表指定位置插入一个或多转载 2016-01-20 18:15:30 · 420 阅读 · 0 评论 -
std::map用法
STL是标准C++系统的一组模板类,使用STL模板类最大的好处就是在各种C++编译器上都通用。 在STL模板类中,用于线性数据存储管理的类主要有vector, list, map 等等。本文主要针对map对象,结合自己学习该对象的过程,讲解一下具体用法。本人初学,水平有限,讲解差错之处,请大家多多批评指正。 map对象所实现的功能跟MFC得CMap相似,但是根据一些文章的介绍和论转载 2016-01-20 10:50:54 · 369 阅读 · 0 评论 -
C++ explicit关键字
C++编程语言中有很多比较重要的关键字在实际编程中起着非常重要的作用。我们今天为大家介绍的C++ explicit关键字就是其中一个应用比较频繁的关键字。下面就让我们一起来看看这方面的知识吧。C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的转载 2016-02-25 17:09:09 · 330 阅读 · 0 评论 -
C++ PIMPL模式
//x.hclass X{public: void Fun();private: int i; //add int i;};//c.h#include class C{public: void Fun();private: X x; //与X的强耦合};PIMPL做法://c.hclass X; //代替#include clas转载 2016-02-25 17:23:30 · 523 阅读 · 0 评论 -
C++模板特化
模板为什么要特化,因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该听你的。模板分为类模板与函数模板,特化分为全特化与偏特化。全特化就是限定死模板实现的具体类型,偏特化就是如果这个模板有多个类型,那么只限定其中的一部分。先看类模板:[cpp] view plain copytemplatetypename转载 2016-03-11 14:37:47 · 442 阅读 · 0 评论 -
Boost linux安装
前期准备:boost中,用到了别的函数库,所以为了使用boost中相应的功能,需要先安装系统中可能缺失的库 apt-get install mpi-default-dev #安装mpi库apt-get install libicu-dev #支持正则表达式的UNICODE字符集 apt-get install python-dev #需要python的话转载 2016-02-26 10:02:03 · 546 阅读 · 0 评论 -
AIO
转载:http://blog.chinaunix.net/uid-11572501-id-2868654.htmlLinux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。它是 2.6 版本内核的一个标准特性,但是我们在 2.4 版本内核的补丁中也可以找到它。AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成转载 2016-03-24 10:56:56 · 480 阅读 · 0 评论 -
static_cast和reinterpret_cast
用法:static_cast ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 进行上行转换(把派生类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转载 2015-11-05 14:41:42 · 287 阅读 · 0 评论 -
iterator和iterator_traits
跟据侯捷的《STL源码剖析》一书中提到的《Design Patterns》一书中关于iterator模式定义:提供一种方法,使之能够依序寻访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表达方式。 当然,STL的中心思想在于:将数据容器和算法分开,彼此单独设计,最后再以一帖胶着剂将他们撮合在一起。 迭代器可以看作是一种smart pointer,故要进行内容提领和转载 2016-05-27 11:13:35 · 520 阅读 · 0 评论 -
shared_ptr理解
shared_ptr是一种智能指针(smart pointer)。shared_ptr的作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。shared_ptr是C++非常重要的一个防止内存泄露的设计作用:这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删原创 2016-05-20 09:17:10 · 1443 阅读 · 0 评论 -
模板参数自动推导
上次,我们看了什么是模板函数,今天,我们就从这个模板函数入手,继而引出一个新的知识点-模板参数自动推导。为了介绍清楚什么是模板参数自动推导,我们先定义几个术语,通过这些术语来描述比较方便,这些术语是:模板形参,模板实参,模板函数形参,模板函数实参。 为了表达明确,我们先来看一下图1,图1中指出了什么是模板参数,模板实参,模板函数形参,模板函数实参。图1 术语 就像图1所转载 2017-01-16 09:35:48 · 590 阅读 · 0 评论