九、 通用工具 ----辅助函数
来源:互联网 发布:网络音乐地址 编辑:程序博客网 时间:2024/06/01 10:36
5 辅助函数
c++标准库提供了若干小型辅助函数,用来挑选最小值,挑选最大值,交换两个值或者提供增补的比较操作符;
1 挑选最小值和最大值
- 一般位于
<algorithm>
头文件中:
其中:minmax()和所有带初始化队列(initializer list)的函数位于:【c++11】
说明:
- minmax() 返回一个
pair<>
,其中first是最小值,second是最大值; - 关于双参数版本,如果被比较的二值相等,min()和max()返回第一个元素;
- 带(initlist)的版本,返回多个最小值或最大值中的第一个元素;
- 两个参数版本返回的是个reference;
- 接受(initlist)版本的返回被比较值的拷贝;
template<typename T>const T& min(const T& a, cosnt T& b);template<typename T>T min(initializer_list<T> initlist);
原因:
1. “initlist”版本,器内部需要一块临时空间,如果返回reference,返回的是一个空悬的reference;
2 两值互换(swapping)
- swap()模板定义与头文件
<utility>
template<typename T>inline ovid swap(T& a, T& b)...{ T tmp(std::move(a)); a = std::move(b); b = std::move(tmp);}
说明:
1. 【c++11】:数值被moved或者move assigned
2. 以前是通过: assigned或copied,定义与头文件<algorithm>
;
3 增补的比较操作符
有四个function template 分别定义了!=,>,<=和>=,四个比较操作符;他们都是利用操作符==和<完成的,这四个函数定义与<utility>
,定义如下;
// !=template<tyname T>inline bool operator!=(const T& x, const T& y){ return !(x==y);}// >template<tyname T>inline bool operator>(const T& x, const T& y){ return (y<x);}//<=template<tyname T>inline bool operator<=(const T& x, const T& y){ return !(y<x);}//>=template<tyname T>inline bool operator>=(const T& x, const T& y){ return !(x<y);}
说明:
1. 这四个操作符依赖于<和==,因此自己定义<和==
;
2. 要使用这些操作符,使用using namespace std::rel_ops
例如:
class X{public : bool operator==(cosnt X&x) const; bool operator<(const X& x) const; ...};//...void foo(){ using namespace std::rel_ops; //使用 !=,> ,>=,<= X x1,x2; .. if(x1!=x2){...} //ok}
阅读全文
0 0
- 九、 通用工具 ----辅助函数
- 辅助函数_通用工具__STL
- 九、 通用工具 ----class ratio<>
- 九、 通用工具 ----pair 和Tuple---pair
- 九、 通用工具 ----pair 和Tuple---Tuple
- 九、 通用工具 ----clock和Timer
- 九、 通用工具 ----动态内存管理--allocator
- 九、 通用工具 ----动态内存管理---new
- Java监控工具、调优、调试辅助函数
- Java监控工具、调优、调试辅助函数
- Java监控工具、调优、调试辅助函数
- Java监控工具、调优、调试辅助函数
- STL与泛型编程<九>:迭代器相关辅助函数
- Jquery(九)jquery工具函数
- 九、 通用工具 ----smart Pointer(智能指针)---shared_ptr 指针
- 九、 通用工具 ----smart Pointer(智能指针)---weak_ptr
- 九、 通用工具 ----smart Pointer(智能指针)---unique_ptr
- 九、 通用工具 ----数值的极限(Numeric Limit)
- 【python】常用文件读取
- mysql数据库基本操作(三)
- Windows修改java环境变量不生效
- fabirc1.0商业正式版本源码解析2——peer命令结构
- vue 组件 全局注册与局部注册的方法
- 九、 通用工具 ----辅助函数
- MySQL的简单应用
- Spring Cloud Feign实例讲解
- Android图片加载框架最全解析(一),Glide的基本用法
- oracle 数据库12c 一个pdb进行delete操作,commit失败导致被锁,需要把会话杀掉
- Angular1.63 绑定数据与继承
- LightOJ 1205 Palindromic Numbers(数位dp)
- 背景图片自适应
- 游戏安全资讯精选2017年第五期:国际网络犯罪基础设施被曝光