自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

用于文件比较等操作,便于比对

用于文件比较等操作,便于比对

2022-09-27

obsidian模板,可以用于工作记录等

obsidian模板,可以用于工作记录等

2022-08-31

c++相关知识分享。。。

c++相关知识分享。。。

2022-05-18

XshellXftpPortable.rar

xshell和xftp

2021-04-01

vs中各种好用的插件,有番茄助手,自动对齐小工具等

vs中各种好用的插件,有番茄助手,自动对齐小工具等

2021-04-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除