
Effective STL总结
文章平均质量分 50
对Effective STL进行总结
哈哈ml
这个作者很懒,什么都没留下…
展开
-
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 · 134 阅读 · 0 评论 -
Effective STL总结
条款13.尽量使用vector和string来代替动态分配数组使用动态分配数组,①必须确保使用delete释放资源,否则会造成内存泄漏②必须保证使用正确的delete方式。对于分配的一个单独对象,使用delete。对于数组,必须使用delete[]。如果使用错误的delete的方式,结果会未定义。③必须保证只delete一次而vector和string会自己管理内存,没有上面的负担。条款14.使用reserve来避免不必要的重新分配STL容器,只要不超过它们的最大大小(调用max_size可以知道)原创 2021-04-21 16:09:18 · 144 阅读 · 0 评论 -
Effective STL总结
在删除选项中仔细选择去除一个容器中有特定值的所有对象如果容器是vector、string或deque,使用erase-remove用法如果是list,使用list::remove如果是标准关联容器(set、multiset、map和multimap),使用它的erase成员函数/*去掉整型容器里面所有值为1963的对象*///当c为vector、string或dequec.erase(remove(c.begin(),c.end(),1963),c.end());//当c是list原创 2021-04-21 11:41:26 · 150 阅读 · 0 评论 -
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 · 167 阅读 · 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的vectorv1.clear();for(vector<Widget>::const_iterator ci=v2.begin()+v2.siz原创 2021-03-25 10:52:58 · 194 阅读 · 0 评论 -
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_multimapvector string和deque也被称为标准的连续内存容器(连续内存容器(也叫做基于数组的容器)在一个或多个(动态分配)的内存块中保存它们的元素。如果一个新元素原创 2021-03-24 14:48:09 · 261 阅读 · 0 评论