###《Effective STL》--Chapter1
点击查看Evernote原文。
#@author: gr
#@date: 2014-09-12
#@email: forgerui@gmail.com
Chapter1 容器
Topic 4: 调用empty而不是检查size()是否为0
当检查一个容器是否为空时,要使用empty而不是size()。empty在检查时的时间总是常数的,而对于size(),一些容器的实现可能是线性的(如list)。
Topic 5: 区间成员函数优先于与之对应的单元素成员函数
使用区间成员函数会得到更高的效率,其次,在可读性方面,使用区间成员函数也比自己写循环要好看多了。
区间创建
container::container(InputIterator begin, InputIterator end);
区间插入
//序列容器
void container::insert(iterator position, InputIterator begin, InputIterator end); //关联容器
void container::insert(InputIterator begin, InputIterator end);
区间删除
//序列容器
iterator container::erase(iterator begin, iterator end); //关联容器
void container::erase(iterator begin, iterator end);
区间赋值
void container::assign(InputIterator begin, InputIterator end);
Topic 9: 慎重选择删除元素的方法
要删除容器中有特定值的所有对象
如果容器是vector,string和deque,则使用erase-remove用法。//删除vector<int>中所有值为10的元素
c.erase(remove(c.bgein(), c.end(), 10), c.end());
如果容器是
list,则使用list::remove。l.remove(l.begin(), l.end(), 10);
如果容器是一个标准关联容器,则使用它的erase成员函数。
//删除关联容器中值为10的元素
m.erase(10);
在循环内删除某些元素
序列容器使用返回值更新迭代器。while(it != con.end()){
if (it->getCount() > theshold){
it = con.erase(it);
}else{
it++;
}
}
关联容器对迭代器递增操作。
while (it != con.end()){
if (it->getCount() > threshold){
con.erase(it++);
}else{
it++;
}
}
###《Effective STL》--Chapter1的更多相关文章
- 《Effective STL》学习笔记
http://www.cnblogs.com/arthurliu/archive/2011/08/07/2108386.html 作者:咆哮的马甲 出处:http://www.cnblogs.com/ ...
- ###《Effective STL》--Chapter3
点击查看Evernote原文. #@author: gr #@date: 2014-09-13 #@email: forgerui@gmail.com Chapter3 关联容器 Topic 22: ...
- ###《Effective STL》--Chapter5
点击查看Evernote原文. #@author: gr #@date: 2014-09-17 #@email: forgerui@gmail.com Chapter5 算法 Topic 30: 确保 ...
- ###《Effective STL》--Chapter6
点击查看Evernote原文. #@author: gr #@date: 2014-09-27 #@email: forgerui@gmail.com Chapter6 函数子.函数子类.函数及其他 ...
- ###《Effective STL》--Chapter7
点击查看Evernote原文. #@author: gr #@date: 2014-08-31 #@email: forgerui@gmail.com Chapter7 在程序中使用STL Topic ...
- ###《Effective STL》--Chapter2
点击查看Evernote原文. #@author: gr #@date: 2014-09-15 #@email: forgerui@gmail.com Chapter2 vector和string T ...
- ###《Effective STL》--Chapter4
点击查看Evernote原文. #@author: gr #@date: 2014-09-14 #@email: forgerui@gmail.com Chapter4 迭代器 Topic 26: i ...
- 容器使用的12条军规——《Effective+STL中文版》试读
容器使用的12条军规——<Effective+STL中文版>试读 还 记的自己早年在学校学习c++的时候,老师根本就没有讲STL,导致了自己后来跟人说 起会C++的时候总是被鄙视, ...
- 《Effective STL中文版》前言
<Effective STL中文版>前言 我第一次写关于STL(Standard Template Library,标准模板库)的介绍是在1995 年,当时我在More Effec ...
随机推荐
- 二、JSP的3个编译指令,7个动作指令,9个内置对象
JSP 3个编译指令 1) page指令(基本不需要用到,使用默认即可) 主要属性: 1.Language:指定脚本所采用的语言类型,现在只支持java 2.Extends:定义当前jsp产生的se ...
- SQL 正则表达式使模式匹配和数据提取变得更容易
SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易 David Banister 本文讨论: 使用正则表达式进行高效的 SQL 查询 SQL Server 2005 对正则表达式 ...
- 实现windows和linux互传文件
http://www.cnblogs.com/ylan2009/archive/2012/01/12/2321126.html 尝试从windows xp向ubuntu11.10传文件 ubuntu使 ...
- oracle查找重复记录
SELECT *FROM t_info aWHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) &g ...
- 【50】了解new和delete的合理替换时机
1.有时候,我们替换掉编译器提供的new或者delete.首先思考,为什么想要替换?下面是三个常见理由: a.用来检测运用上的错误,超额分配一些内存,再额外的空间放置一些内存: b.为了强化效能,编译 ...
- 支持向量机(SVM)算法的matlab的实现
支持向量机(SVM)的matlab的实现 支持向量机是一种分类算法之中的一个,matlab中也有对应的函数来对其进行求解:以下贴一个小例子.这个例子来源于我们实际的项目. clc; clear; N= ...
- python 源码解析
http://blog.donews.com/lemur/archive/category/cpython%E6%BA%90%E7%A0%81%E5%89%96%E6%9E%90/
- 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程
Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/
- chrome浏览器更新到chrome 29.0.1547.76 m,多出一些蛋疼的功能来。
更新到chrome 29.0.1547.76 m 的时候,莫名其妙多出一些蛋疼的功能来. 1.alert之类的弹出对话框样式变了,并且位置不是居中的,跑到了最上面去了,如下图. 要把这对话框改回原始状 ...
- Helpers\Data
Helpers\Data Data helper contains a bunch of useful methods for looking at and altering your data. D ...