随笔分类 -  C++

1
摘要:以前在IDE调试的话,就很容易设置断点,查看参数值,到了 linux 下就变得比较麻烦了。目前觉得比较重要的就是:1.设置断点:gdb命令 break,也可以用 b 。 方法 b [函数名|行号],需要注意的是,如果你要设置在类成员函数中设置断点,要加上类名,比如 b TcpClient::onMe... 阅读全文
posted @ 2015-11-09 19:50 forxtz 阅读(261) 评论(0) 推荐(0)
摘要:使用 functional 和 bind 就可以简单绑定类成员函数参数,且能指定对象。成员函数必须用 & 来获取地址,非成员就不需要,方便记,就统一加 & 好了。#include #include using namespace std;using namespace std::placeholde... 阅读全文
posted @ 2015-11-09 15:46 forxtz 阅读(642) 评论(0) 推荐(0)
摘要:转:http://a117702.blog.163.com/blog/static/327871062009716111134177/在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型class A{ int i; ... 阅读全文
posted @ 2015-10-13 15:42 forxtz 阅读(586) 评论(0) 推荐(0)
摘要:参考:http://blog.csdn.net/cen616899547/article/details/9317323目的:让一些类能通过他的类名来进行实例化,配合抽象工厂模式的使用思路:1.有一个单例factory类,其成员map m_classMap ;存放类名及相应的初始化函数。 2.... 阅读全文
posted @ 2015-10-12 16:01 forxtz 阅读(2808) 评论(1) 推荐(0)
摘要:根据上一次的测试,有缓存的日志类性能会更好。用到了time.h类函数,所以在linux下就要改动一下了,windows环境下写的。思路采用(参照muduo库的日志,不过认为他线程不安全,和没用缓存,就改造了下)1.有一个总的缓存,logboss,为一个恶汉模式的单例类,指针对象为智能指针,析构函数讲... 阅读全文
posted @ 2015-09-26 22:03 forxtz 阅读(1337) 评论(0) 推荐(0)
摘要:一般形式都是 type func(char * formatstr,...);然后通过已有的参数 formatsrr 来推出,后面的参数。这样写起来的话,就要匹配所有的基本类型,C++提供了3个宏和算法可以简单处理。这样,通过vsprintf_s就格式化到buf中。#include #include... 阅读全文
posted @ 2015-09-23 15:41 forxtz 阅读(683) 评论(0) 推荐(0)
摘要:最近在琢磨一个日志类,然后就想到,如果处于一个频繁写日志的状态,那么IO操作会不会引起瓶颈呢。于是就做了一个测试。有一个4000容量的字符数组,比较一个一个写,和一次性写所花的时间,执行200次。结果显示,一个一个写的话,时间需要 617.426s 一次性一次性的写的话,时间需要0.131s... 阅读全文
posted @ 2015-09-22 18:24 forxtz 阅读(238) 评论(0) 推荐(0)
摘要:vector优异效率的秘诀之一,就是分配出“较其容纳的元素”更多的内存。Deque 与 vector 相比,功能上的差异如下:· 两端都能快速安插元素和移除元素(vector 只在尾端能这样)。· 访问元素的时候比vector慢一点,多了个间接的过程。· deque 不支持对容量和内存重新分配时机的... 阅读全文
posted @ 2015-09-15 10:04 forxtz 阅读(162) 评论(0) 推荐(0)
摘要:#include #include using namespace std;/* * 结论: * capacity = 1, newcapacity = 2; * capacity > 1, newcapacity = (int)(capacity * 1.5); */int main(){ ... 阅读全文
posted @ 2015-09-15 09:22 forxtz 阅读(1386) 评论(0) 推荐(0)
摘要:突然想写个爬虫,然后发现,如果有正则表达式,会方便些。C++11提供了Regex类.可以用来完成:1.Match: 将整个输入拿来比对(匹配)某个正则表达式。2.Search:查找“与正则表达式吻合”的子序列。3.Tokenize:正则表达式作为分割器,得到分割器之前的字符串。4.Replace:将... 阅读全文
posted @ 2015-09-13 10:12 forxtz 阅读(3623) 评论(0) 推荐(4)
摘要:总会忘记,如果写一个比较函数 left right; 则排序是降序。priority_queue 是小根堆。std::sort 底层是用快排+堆排+插入(分情况选择用什么排序)实现,平均复杂度为 Nlog(N);class testless{public: bool operator ()(... 阅读全文
posted @ 2015-09-09 14:47 forxtz 阅读(4323) 评论(0) 推荐(0)
摘要:大致测试了下,堆区大概可以申请 1G这样。捕获 new 的异常,一般抛出 std::bad_allocvoid test(){ char * c = NULL; // input bad_alloc //unsigned int i = (unsigned int)pow(2,31... 阅读全文
posted @ 2015-09-07 14:25 forxtz 阅读(324) 评论(0) 推荐(0)
摘要:首先,先简单介绍,线程池的工作原理。1.他自身拥有一定数量的线程数组 threads,处于等待状态,等待唤醒(通过条件变量)2.拥有一个任务队列 m_tasks,存储用户的任务,有新任务以后,唤醒线程,取出任务,通过回调函数的方式调用任务,执行完以后继续等待。使用情况:线程池,适用于会话简短的情况下... 阅读全文
posted @ 2015-08-30 14:57 forxtz 阅读(1008) 评论(0) 推荐(0)
摘要:int add(int a,int b){ return a+b;}第一种,c语言通用。定义一个process_job函数指针类型,返回值为 int ,函数参数为int a,int b。使用用两种方法。 typedef int (*process_job)(int a,int b); ... 阅读全文
posted @ 2015-08-25 12:08 forxtz 阅读(1267) 评论(0) 推荐(0)
摘要:1.使用函数对象,可以让函数变得有状态。而且可以在运行期再初始化。2.函数对象通常比寻常函数速度快。templatevoid add(int& elem){ elem += theValue;}class AddValue{private: int theValue;public: ... 阅读全文
posted @ 2015-08-25 11:49 forxtz 阅读(148) 评论(0) 推荐(0)
摘要:C++ 比较烦恼的是内存的管理,new是简单,不够,delete偶尔就会忘记。或者说,出现,多个对象共享多一个内存,一个delete以后,导致其他也不能用的不良情况,所以就跑出了一个智能指针来进行管理。设计需求:1.该智能指针能接受各种类型的指针 -- 使用模板2.智能指针需要知道该对象有多少个人在... 阅读全文
posted @ 2015-08-19 17:56 forxtz 阅读(1566) 评论(0) 推荐(0)
摘要:今日发现要使用堆,然后priority_queue 使用的恰好是堆,默认是大根堆,这样的话,如果遇到需要用到大根堆,小根堆来处理问题的时候,可以使用这个结构。常用方法与队列差不 push(),pop(),top()上一部分代码,可以看出默认比较是 less 所以是大根堆,默认的话,里面的容器是vec... 阅读全文
posted @ 2015-08-19 17:21 forxtz 阅读(277) 评论(0) 推荐(0)
摘要:一般来说,我们会用time做这些事情,一个是,获取日期,一个是计算某段代码的运行时间。额,这是vs2008的。C++11有更好的精度。1.运行时间,clock_t单位是(ms),转为s 要/CLOCKS_PER_SEC(1000)#include #include #include void pri... 阅读全文
posted @ 2015-08-16 14:30 forxtz 阅读(253) 评论(0) 推荐(0)
摘要:这个就涉及效率的问题,怎么要写,才会尽可能的少调用构造函数。先设计如下的类class tempTest{public: tempTest(){ cout <<"hello tempTest() "<<count++ << endl; } tempTest(tempT... 阅读全文
posted @ 2015-08-16 14:10 forxtz 阅读(380) 评论(0) 推荐(0)
摘要:首先认识3种拷贝构造函数:1.默认的拷贝构造函数;2.自己定义的拷贝构造函数;3.move拷贝构造函数;typedef struct MyTest{ int a; int b; float c; int * d; MyTest ():a(1),b(2),c(2.2){ ... 阅读全文
posted @ 2015-08-15 16:26 forxtz 阅读(261) 评论(0) 推荐(0)

1