c++学习
文章平均质量分 67
砖头他爸
这个作者很懒,什么都没留下…
展开
-
[C++对象模型][8]多重继承与虚函数表
一 多重继承1) 代码:Code#include iostream>using namespace std;class B1{public: int x; virtual void v1(){ cout "B1::v1" endl; } void f1(){cout "B1::f1" endl; }};cla转载 2014-11-11 10:14:53 · 498 阅读 · 0 评论 -
boost库之ptree的ini配置文件解析
[cpp] view plaincopy// FirstTest.cpp : 定义控制台应用程序的入口点。 //ptree解析ini文件,get(treename, translator) :translator类型实例 #include "stdafx.h" #include #include #include转载 2015-04-29 13:57:25 · 971 阅读 · 0 评论 -
c++ stl容器
C++中有两种类型的容器:顺序容器和关联容器。顺序容器主要有vector、list、deque等。其中vector表示一段连续的内存,基于数组实现,list表示非连续的内存,基于链表实现,deque与vector类似,但是对首元素提供插入和删除的双向支持。关联容器主要有map和set。map是key-value形式,set是单值。map和set只能存放唯一的key,multimap和multise转载 2015-04-07 18:17:56 · 786 阅读 · 0 评论 -
使用 Google gflags 简化命令行参数处理
(本文章仅适用于C++程序)写服务程序时,如果需要提供命令行参数。传统的方法是手工解析argv参数,或者使用getopt函数。两种方法都比较费劲。使用Google gflags可以大大简化命令行参数处理。安装gflag从官方地址http://code.google.com/p/google-gflags/下载gflags并安装。比如我下载的是1.5版本。[yichi@y转载 2015-04-22 14:22:53 · 742 阅读 · 0 评论 -
剖析STL容器遍历删除时诡异的erase(iter++)
剖析STL容器遍历删除时诡异的erase(iter++)---------------------------------------------------------------------STL中结点类容器(如:list,hash_map)遍历时进行删除时,需要这样做:for(list::iterator iter = m_list.begin(); iter != m_li转载 2015-04-01 16:35:00 · 1930 阅读 · 0 评论 -
c++实现线程池
线程池:简单地说,线程池 就是预先创建好一批线程,方便、快速地处理收到的业务。比起传统的到来一个任务,即时创建一个线程来处理,节省了线程的创建和回收的开销,响应更快,效率更高。在linux中,使用的是posix线程库,首先介绍几个常用的函数:1 线程的创建和取消函数 pthread_create 创建线程 pthread_join 等待线程结束 pthread_ca转载 2015-04-02 14:22:28 · 575 阅读 · 0 评论 -
C++ string类的常用用法
通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了!下面先罗列出string类的函数有哪一些,然后再罗列出函数的原型,最后到代码的实现标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用。现将具体用法的一部分罗列如下,只起一个抛砖转载 2015-03-27 14:31:02 · 339 阅读 · 0 评论 -
类成员的const, static修饰
Const修饰:先说说被const的单独修饰成员吧,const单独修饰的成员只允许被初始化一次,先看下面const成员的特点吧: const int x; const string str; const char arr[10]; // 喔,不允许声明数组 …… Const成员的初始化只能放在构造函数的初始化参数列表中,放转载 2015-02-27 15:08:51 · 354 阅读 · 0 评论 -
教你透彻了解红黑树
推荐阅读:Left-Leaning Red-Black Trees, Dagstuhl Workshop on Data Structures, Wadern, Germany, February, 2008. 直接下载:http://www.cs.princeton.edu/~rs/talks/LLRB/RedBlack.pdf------------------------转载 2014-12-02 15:25:51 · 483 阅读 · 0 评论 -
KMP算法
引记 此前一天,一位MS的朋友邀我一起去与他讨论快速排序,红黑树,字典树,B树、后缀树,包括KMP算法,唯独在讲解KMP算法的时候,言语磕磕碰碰,我想,原因有二:1、博客内的东西不常回顾,忘了不少;2、便是我对KMP算法的理解还不够彻底,自不用说讲解自如,运用自如了。所以,特再写本篇文章。由于此前,个人已经写过关于KMP算法的两篇文章,所以,本文名为:KMP算法之总结篇。转载 2014-12-01 10:45:57 · 558 阅读 · 0 评论 -
[C++对象模型][7]单继承与虚函数表
一 单继承1) 代码:Code#include iostream>using namespace std;class A{public: void f1(){cout "A::f1" endl;} void f2(){cout "A::f2" endl;} virtual void v1(){cout "A::v1转载 2014-11-11 11:03:58 · 481 阅读 · 0 评论 -
[C++对象模型][6]sizeof与对象内存布局
有了前面几节的铺垫,本节开始摸索C++的对象的内存布局,平台为windows32位+VS2008。一 内置类型的size内置类型,直接上代码,帮助大家加深记忆:Code void TestBasicSizeOf() { cout __FUNCTION__ endl; cout " sizeof(char)= " size转载 2014-11-11 11:02:21 · 429 阅读 · 0 评论 -
[C++对象模型][5]堆栈与函数调用
一 C++程序内存分配1) 在栈上创建。在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,一般使用寄存器来存取,效率很高,但是分配的内存容量有限。 2) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete来释放内存。动态内存的生转载 2014-11-11 11:00:42 · 532 阅读 · 0 评论 -
[C++对象模型][4]指针与字符串
开始之前必须明确strlen的含义,原型为size_t strlen( char *str ); strlen返回字符串的长度,即null(\0)之前的字符的数量。一 char* 与 char []实例加注释:Code void TestCharPointerAndArray() { char *c1 = "abc"; //abc\0常量区,c1在栈上,转载 2014-11-11 10:58:48 · 498 阅读 · 0 评论 -
[C++对象模型][3]指针与数组
数组可以看做为一种类型,与指针不同,但是可以相互转化。 一 C指针操作函数new和delete对C++的程序员也许很熟悉,但是malloc和free被用来在C代码中用来内存分配和释放,很多C++开发者并不能游刃有余的使用,下面实例解析malloc和free的使用。 mallocvoid *malloc(long NumBytes):该函数分转载 2014-11-11 10:57:28 · 509 阅读 · 0 评论 -
[C++对象模型][2]指针与引用
一 概括指针和引用,在C++的软件开发中非常常见,如果能恰当的使用它们能够极大的提高整个软件的效率,但是很多的C++学习者对它们的各种使用情况并不是都了解,这就导致了实际的软件开发中经常会内存泄漏,异常抛出,程序崩溃等问题。对于C和C++的初学者,那更是被它们搞的迷迷糊糊。本篇作为[深入C++]系列的第一节,我们就带领大家把指针和引用这个基本功练好。二 指针指针,指针的定义转载 2014-11-11 10:55:53 · 470 阅读 · 0 评论 -
[C++对象模型][9]虚继承与虚函数表
一 虚继承1) 代码:Code#include iostream>using namespace std;class B{public: int i; virtual void vB(){ cout "B::vB" endl; } void fB(){ cout "B::fB" endl;}};class D转载 2014-11-11 10:52:51 · 446 阅读 · 0 评论 -
c++成员初始化列表
++成员初始化列表2009-03-20 14:50C++为类中提供类成员的初始化列表类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算使用初始化列表有两个原因:1.必须这样做: 如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员转载 2015-05-06 10:57:11 · 678 阅读 · 0 评论