随笔分类 -  C/C++

摘要:本文目的最近温习了一下C++ STL中的algorithm库函数,记得上次看这些内容时,还在读书,可以追溯到2009年春天了(刚好4年J)。正所谓为“温故而知新,可以为师矣”。闲话少说,开始正文。算法库C++标准算法库中包含一些模版函数,用于执行基本的算法,比如for_each(遍历容器),random_shuffle(随机打乱容器)等。主要实现包含在头文件<algorthim>中,少量在<numeric>中。它是STL的三大核心组件之一,其他两个是容器(container,常用数据结构)和迭代器(Iterator,数据结构访问适配器)。设计思想:算法函数通过迭代器作用 阅读全文
posted @ 2013-03-22 15:58 bourneli 阅读(9563) 评论(0) 推荐(0) 编辑
摘要:epoll全名event poll,他是poll的加强版本,从linux 2.6开始。select,poll,epoll的关系:select,IO多路归并,也就是在单一线程中监控多个fdpoll:具有select的作用,但是select有个局限,被监听的fd数量有限,poll改进了这一点,并且相比于select而言,接口更方便epoll:具有epoll的作用,但是poll是O(n)操作,即需要线性遍历所有的fd,逐一检测,而epoll进行了改进,通过事件注册,直接触发相关函数,不需要遍历所有注册的fd。epoll有三个接口:epoll_create:创建epoll对象epoll_ctl:控制e 阅读全文
posted @ 2011-12-30 13:25 bourneli 阅读(821) 评论(0) 推荐(2) 编辑
摘要:本文目的前几天在开发中遇到一个古怪的问题,定位了两天左右的时间才发现问题。该问题正如题目所描述:单一模式在动态链接库之间出现了多个实例。由于该实例是一个配置管理器,许多配置信息都在这个实例的初始化过程中读取,一旦出错,系统的其他地方都无法正确运行,所以给问题定位带来一定难度。为了避免敏感信息的泄漏,同时为了便于大家理解,将问题简化,在此与大家分享。问题描述首先,编写一个简单的单一模式的类,文件singleton.h内容如下。#ifndef SINGLETON_H_#define SINGLETON_H_class singleton{private: singleton() {num =... 阅读全文
posted @ 2011-12-28 18:24 bourneli 阅读(10039) 评论(1) 推荐(4) 编辑
摘要:本文目的前几天在写程序时,发现一个多重继承类,调用virtual函数会出现一个问题,该问题比较隐晦(因为不会引起程序core dump等严重的效果,我是很偶然的在单元测试中发现的),不容易定位,但是如果出现,可能对程序逻辑会带来致命的问题。一个例子#include <iostream>using namespace std;class Base1{public: virtual void foo1() {};};class Base2{public: virtual void foo2() {};};class MI : public Base1, public Base2{pub 阅读全文
posted @ 2011-12-28 18:10 bourneli 阅读(23832) 评论(4) 推荐(0) 编辑