- 博客(8)
- 资源 (3)
- 收藏
- 关注
原创 function函数和模板类
function函数和模板类 最近在公司看代码学习到了一个function函数与模板类的结合,感觉非常的棒,特此记录下。 function.h #include<iostream> int A_Value(int a) { return a*10; } int B_Value(int a) { return a*5; } int A_Init(int a,int b) { return a*b ;} int B_Init(int a,int b) { return a+b;} Ty
2021-05-14 10:23:47 285
转载 share_ptr内存泄漏
下面是shared_ptr三种常见的定义方式:shared_ptr sp;//声明一个指向int类型的智能指针 sp.reset(new int(42)); auto sp1 = make_shared<string>("hello");//sp1是一个智能指针 shared_ptr sp2(new int(42)); 而make_shared方式是推荐的一种,它使用一次分配,比较安全。哪些操作会改变计数我们都知道,当引用计数为0时,shared_ptr所管理的对象自动销毁(拥抱智能指针,告别内
2021-04-27 10:48:00 1370
原创 Effective STL总结
条款16.将vector和string的数据传给遗留的API 传统的c风格API接受的是数组和char*指针,而不是vector和string,那么如何将vector和string对象传给这样的传统的c风格API呢? 如果你有一个vector对象v,只需要使用&v[0]即可,string对象s,只需要简单的s.c_str()即可。 v[0]表示指向vector的第一个元素的引用,&v[0]表示首元素的指针。因为vector中的元素都是存储在连续内存中的。所以我们给下面的c风格API传送指针时
2021-04-22 11:36:36 112
原创 Effective STL总结
条款13.尽量使用vector和string来代替动态分配数组 使用动态分配数组,①必须确保使用delete释放资源,否则会造成内存泄漏②必须保证使用正确的delete方式。对于分配的一个单独对象,使用delete。对于数组,必须使用delete[]。如果使用错误的delete的方式,结果会未定义。③必须保证只delete一次 而vector和string会自己管理内存,没有上面的负担。 条款14.使用reserve来避免不必要的重新分配 STL容器,只要不超过它们的最大大小(调用max_size可以知道)
2021-04-21 16:09:18 114
原创 Effective STL总结
在删除选项中仔细选择 去除一个容器中有特定值的所有对象 如果容器是vector、string或deque,使用erase-remove用法 如果是list,使用list::remove 如果是标准关联容器(set、multiset、map和multimap),使用它的erase成员函数 /*去掉整型容器里面所有值为1963的对象*/ //当c为vector、string或deque c.erase(remove(c.begin(),c.end(),1963),c.end()); //当c是list
2021-04-21 11:41:26 120
原创 Effective STL 总结
7.当使用new的指针容器时,记得在销毁容器前delete那些指针 当容器容纳的是指向通过new分配的对象的指针时,当指针容器被销毁时,不会销毁里面的指针,故会造成内存泄漏 class Widget { public: private: }; void doSomething() { vector<Widget *> vwp; for (int i = 0; i < size; ++i) { vwp.push_back(new Widget) } }//
2021-03-25 14:23:46 140 1
原创 Effective STL 总结
5.尽量使用区间成员函数代替它们的单元素兄弟 如果给定两个vector,v1和v2,使v1的内容和v2的后半部分一样的简单方法是什么? 1.使用容器成员函数 v1.assign(v2.begin()+v2.size()/2,v2.end()); 2.使用循环 vector<Widget>v1,v2; // 假设v1和v2是Widget的vector v1.clear(); for(vector<Widget>::const_iterator ci=v2.begin()+v2.siz
2021-03-25 10:52:58 158
原创 Effective STL总结
Effective STL总结1. 条款1 仔细选择你的容器 1. 条款1 仔细选择你的容器 *标准STL序列容器:vector string deque list *标准STL关联容器:set mulist map multimap *非标准关联容器:hash_set hash_multiset hash_map hash_multimap vector string和deque也被称为标准的连续内存容器(连续内存容器(也叫做基于数组的容器)在一个或多个(动态分配)的内存块中保存它们的元素。如果一个新元素
2021-03-24 14:48:09 239
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人