迭代器和算法
来源:互联网 发布:npm run windows 编辑:程序博客网 时间:2024/05/22 14:29
1、关乎效率时在map-operator[]和map-insert中慎重选择
map-operator[],检查k是否在map中,如果不在,则添加上,如果在,则更新‘
它会返回一个k值关联对象的引用。然后用v赋值给引用对象。当k不在上,会先构造一个空的对象,然后调用赋值操作。
2、通过mismatch和lexicographical比较实现简单的忽略大小写字符串的比较
3、了解你的排序选择
算法效率从高到低
partition:vector::iterator = partition(vector.begin(), vector.end(), boolfunction); begin到返回的iterator区间容纳了boofunction返回为true的所有值。
partial_sort:排出前n个最好的值。不需要排列全部。partial_sort(vector.begin(), vector.begin + 20,vector.end,compare);保证了前n个元素的顺序
stable_partition。partition的稳定版本.
sort:完全排序
nth_element:排出前n个元素,n个元素只保证是全部里面的前n个,但是不保证顺序,partial_sort保证了前n个的顺序。
stable_sort:提供了稳定版本。到n个元素中有相同元素时,stable_sort保证了相同元素的顺序,而partial_sort则对于相同值的元素是不受我们控制的。
4、获取容器中最大值和最小值
min_element
max_element
5、统计区间
accumulate:默认统计区间的和。
accumulate(vector.begin(), vector.end(), 0); // 0.0则表示用浮点数
也可以自定义方法。
accumulate(vector.begin(), vector.end(), 0, accufunction);
for_each也可以实现类似功能
6、注意哪个算法需要有序空间
binary_search
lower_bound
upper_bound
7、把仿函数类设计为用于值传递
C和C++都不允许你把函数作为参数传递给其它函数。取而代之的是传递函数指针。
如for_each(first, last, function);
传递的是函数指针,期间会有一个值拷贝。如果函数体很大或则有多态,则拷贝就会有问题。
可以同构代理Impl的形式解决该问题。
- 迭代器和算法
- 迭代器和算法
- 20170403STL011_STL_算法和迭代器
- 算法和算法分析
- 算法和算法分析
- 算法和算法分析
- 算法和算法实现
- 算法和算法分析
- 泛型算法 (输入输出迭代器和算法综合介绍)
- c++ STL常见算法和迭代器
- Warshall算法和Floyd算法
- BF算法和KMP算法
- DDA算法和Bresenham算法
- 概率算法和近似算法
- DDA算法和Bresenham算法
- 算法和算法分析基础
- BP算法和KMP算法
- Dijkstra算法和Floyd算法
- struts2请求基本简要流程
- PAT1071(字符串)
- 结构体和类的区别
- <Context path="/struts2" docBase="D:\strustworkspace\struts2\WebRoot" reloadable="true"/>配置问题
- 12.如何自学Struts2发送邮件和验证补充[视频]
- 迭代器和算法
- static/static const 的初始化
- WCF服务创建实例说明
- Xamarin Getting Started系列翻译一
- JAVA RMI远程方法调用简单实例
- python笔记7--常用的内建模块
- HDU 2196解题报告
- IOS开发—IOS7.0以后UILabel高度自适应设置
- atoi()函数的实现