专注linux服务端编程
stl源码笔记__序列容器_deque

deque vector是单向的连续空间,因此如果要向头部增加删除元素,那么性能方面是不可被接受的,deque是一个双向的连续空间。它可以在常数时间内对头尾两侧做插入和删除操作。 deque的连续空间并不是像vector一样一块大内存,它是由动态的多段连接空间组成,因此当连接空间不够时,它只要新分配一个连接空间,然后把它们和以前的连接起来,所以不会像vect …

stl源码笔记__序列容器_vector_list

序列容器组成: 关联式容器组成: 序列容器都是ordered,但并不是sorted.要区别好这两个意思。 vector,list,deque,forward_list容器都有以下层次结构: 其中base class中都有一个内部类**_impl(_Vector_impl,_List_impl,_Deque_impl,_Fwd_list_impl),它们都继承 …

stl源码笔记__iterator

stl iterator iterator目的是为了让容器和算法之间更好的搭配。它封装了具体的类型,而以一种统一的类型和操作方式传给算法。 比如排序算法,如果没有iterator,那么算法要么就只能根据不同容器的存取特性去不同实现,要么就只能要求所以的容器都必须有某种相同的特性(要是必须要相同的特性,那就是iterator设计的初衷)。 模板特化 模板全特化 …

eshell 是不直接用 ssh 的,要去哪个 server 就这样: cd /ssh:user@server.name:/target/dir 如:cd /ssh:mqq@10.135.5.41.mqq:/usr/local/resin4 You can refer to files on other machines using a special fi …

c++ new运算符和operator new, placement new的区别 我们在调用Test* test= new Test();时,就是调用的new运算符,就好比运算符’+,-‘一样,它先通过调用operator new分配内存,再通过调用Test()构造函数进行初始化.new操作符是不能被更改的. 而operator n …

stl源码笔记__allocator

libstdc++现在已经不单独发布了,它都集成在gcc源码中,所以要看stl的源码,要去下载gcc的源码,找到其中的libstdc++-v*目录.而stl源码在include/bits中. 本着学习的目的,这是本人读<stl源码剖析>和对照gcc-4.9中stl的笔记: allocator allocator是一个空间分配器,它的目的就是对一个 …

由于c++ type类型和object是不同的东西,所以我们不能从一个类型标识来产生一个对象,但在java中,通过反映,我们很容易通过一个class name来得到一个class,并且产生一个对象,这个特性对于很多写框架性代码的人受益匪浅,那c++怎么才能达到这点呢? 要达到完全的动态产生,c++还做不到,但是对于某些形式比较固定常见的用法,在这儿做一个总结 …

每种模式都可以处理所有的情况。 两种模式对于服务器来说,都是一样的:接收请求–>给工作线程处理–>返回响应;      只是他们对于写处理函数的方式不同,MessageQueue方式处理时,服务器开发人员拿到的是一个消息,通过消息类型编写不同的处理函数,新增功能时,向服务器注册某个消息类型的处理函数;而RPC是向服务器注册 …

在c++编程中,常常会遇到要将用户的输入字符串分拆到不同的变量中: 如,把:signature=sssss&timestamp=tttttt&nonce=1111&echostr=aaaa分别放到signature,timestamp,nonce,echostr四个不同的变量中,我们可以利用strtok来进行拆分: std::vect …