C++
文章平均质量分 62
xujiali5172923
这个作者很懒,什么都没留下…
展开
-
如何声明过期API,类似于调用非_s(安全版本)库函数,编译器输出警告信息
见截图。原创 2015-05-26 16:50:29 · 822 阅读 · 0 评论 -
C++内存池的极简版实现
当在一个函数中需要大量使用new来申请临时用的数组或对象时,用完之后需要对每一个new出来的数组进行释放,特别当一个函数特别长的时候,(如在我厂的系统中,1000行的函数是经常的),要去找出之前写的每一个new然后写对应的delete,这是极不美观且易漏掉的,因此使用自己的内存管理方案是很有好处的: 1.程序员可以尽情地new,不用负责释放 2.使用内存池一转载 2016-12-07 15:23:33 · 468 阅读 · 0 评论 -
vs配置boost开发环境
vs2010配备boost编程环境 vs2010配置boost编程环境 第一步:下载boost,我下载的方法是从http://www.boost.org/上找最新的下载。名字叫boost_1_53_0。 第二步:在D盘(最新的boost_1_53_0编译之后大小为5G多)创建一个目录boost,拷贝进去并解压到当前文件夹。(注,这里我没有创建boost目录,直接解压的) 第三步转载 2016-08-22 14:29:37 · 641 阅读 · 0 评论 -
int转string
#include /* convert other data to string usage : string str = m_toStr(12345); */ template class T> string m_toStr(T tmp) { stringstream ss; ss原创 2016-04-26 15:52:56 · 273 阅读 · 0 评论 -
为什么前置++比后置++的效率高
仅对类类型而言,请看代码: class A { public: A() { cout << "A的构造函数" << endl; } A(const A &a) { m_i = a.m_i; cout << "A的拷贝构造函数" << endl; } ~A() { cout << "A的析构函数" << endl; } A& operator++()//前置版原创 2015-07-27 10:49:07 · 667 阅读 · 0 评论 -
Effective C++ 46条 需要类型转换时请为模板定义非成员函数
背景:承接条款24条(请先去了解),那么,之于template实现版本呢? template class Rational { public: Rational(const T& numerator = 0, const T & denominator = 1); const T numerator() const; const T denominator() const原创 2015-06-05 15:01:11 · 485 阅读 · 0 评论 -
Effective C++ 45条 成员模板--运用成员函数模板接受所有兼容类型
背景:真实的指针的隐式转换很自然,例如: class Top {...}; class Middle : public Top {...}; class Bottom : public Middle {...}; Top *pt1 = new Middle; //将Middle*转换为Top* Top *pt2 = new Bottom; //将Bottom*转换为Top* const To原创 2015-06-03 14:44:13 · 364 阅读 · 0 评论 -
Effective C++ 44条 将与参数无关的代码抽离templates
引言:我们几乎都知道泛型编程会导致代码膨胀问题,那膨胀了就不好吗?当然啦,不仅仅是因为那一点点硬盘空间,因为同等的功能,目标文件或可执行文件太大,意味着包含着更多的指令,这样就会使指令的高速缓存压力山大,当然影响程序的执行效率。那么让我们看下面一个具体的例子: 假如你想为固定尺寸的正方矩阵编写一个template,并且该矩阵支持求逆矩阵计算: //template支持n * n矩阵,元素类型是原创 2015-05-22 14:39:08 · 554 阅读 · 2 评论 -
Effective C++ 43条 处理模板化基类内的名称
引子:要将信息以明文或密文发送至不同的公司,当我们在编译期间(就是写代码的时候)有足够的信息决定传送至那一家公司,可以采用template的方法: #include using namespace std; class CompanyA { public: void SendClearTxt(const string &msg); void SendEncrypted(const s原创 2015-05-20 14:48:28 · 482 阅读 · 0 评论 -
一次循环删除std::vector元素的方法
最近又遇到这个逻辑,耽误了不少时间,现在整理下: erase返回的是指向删除元素的下一个元素的迭代器,那么根据这个逻辑,所以一次循环删除逻辑如下; for (auto it = vecReply.begin(); it != vecReply.end();) { if (it->xx== xx) { it = vecReply.erase(it); } else原创 2017-05-10 10:46:17 · 1946 阅读 · 0 评论