1.utility

定义标准模板库 (STL) 类型、 函数和运算符,以帮助构建和管理的对象,这两个对象视为就可以像在需要时可对 。

备注

      对已得到广泛应用的标准c++库中。 它们是必需的作为参数和返回值的各种功能和元素类型的容器 (例如类映射 和 multimap 类。 <utility>标题将自动包含通过 <map> 要帮助管理其键/值对键入的元素。

2.使用

头文件:#include <utility>

类:pair

函数:

  1. forward 保留引用类型(或者lvalue或rvalue) 参数从被遮掩完美转发。
  2. get 获取从元素的函数pair对象。
  3. make_pair 用于构造类型的对象的模板 helper 函数pair,其中的组件类型基于作为参数传递的数据类型。
  4. move 返回传入参数作为rvalue的引用。
  5. swap 交换两个 pair 对象的元素。

运算符

运算符! =
测试该运算符左侧的对对象不等于对对象的右侧。
运算符 = =
测试该运算符左侧的对对象等于对对象的右侧。
运算符 <
测试对运算符的左边的对象小于对对象的右侧。
运算符 < =
测试对运算符的左边的对象小于或等于对对象的右侧。
运算符 >
测试该运算符左侧的对对象大于对对象的右侧。
运算符 > =
测试该运算符左侧的对对象大于或等于对对象的右侧。

3.例子

1.类pair使用

#include <iostream>
#include <utility>
using namespace std;
pair<int, int> p;
int main()
{
cin >> p.first >> p.second;
cout << p.first << " " << p.second << endl;
return 0;
}

2.函数swap使用

// swap algorithm example (C++11)
#include <iostream>     // std::cout
#include <utility>      // std::swapint main () {int x=10, y=20;                  // x:10 y:20std::swap(x,y);                  // x:20 y:10int foo[4];                      int bar[] = {10,20,30,40};       std::swap(foo,bar);              std::cout << "foo contains:";for (int i: foo) std::cout << ' ' << i;std::cout << '\n';return 0;
}

3.make_pair的使用

// make_pair example
#include <utility>      // std::pair
#include <iostream>     // std::coutint main () {std::pair <int,int> foo;std::pair <int,int> bar;foo = std::make_pair (10,20);bar = std::make_pair (10.5,'A'); std::cout << "foo: " << foo.first << ", " << foo.second << '\n';std::cout << "bar: " << bar.first << ", " << bar.second << '\n';return 0;
}

4.函数forward的使用

// forward example
#include <utility>      // std::forward
#include <iostream>     // std::cout// function with lvalue and rvalue reference overloads:
void overloaded (const int& x) {std::cout << "[lvalue]";}
void overloaded (int&& x) {std::cout << "[rvalue]";}// function template taking rvalue reference to deduced type:
template <class T> void fn (T&& x) {overloaded (x);                   // always an lvalueoverloaded (std::forward<T>(x));  // rvalue if argument is rvalue
}int main () {int a;std::cout << "calling fn with lvalue: ";fn (a);std::cout << '\n';std::cout << "calling fn with rvalue: ";fn (0);std::cout << '\n';return 0;
}

输出: calling fn with lvalue: [lvalue][lvalue]

calling fn with rvalue: [lvalue][rvalue]

5.move的使用

// move example
#include <utility>      // std::move
#include <iostream>     // std::cout
#include <vector>       // std::vector
#include <string>       // std::stringint main () {std::string foo = "foo-string";std::string bar = "bar-string";std::vector<std::string> myvector;myvector.push_back (foo);                    // copiesmyvector.push_back (std::move(bar));         // movesstd::cout << "myvector contains:";for (std::string& x:myvector) std::cout << ' ' << x;std::cout << '\n';return 0;
}

输出:

myvector contains: foo-string bar-string

C++下的utility相关推荐

  1. ansa打开catia文件_关于CATIA文件格式的那些事儿

    打开一个CATIA文件,在另存为的保存类型列表中选择,可以看到当前文件可以保存的数据格式:比如常用的STL,IGS,Model,STP,3dxml,cgr等 下面将对常见的文件格式进行介绍,希望对大家 ...

  2. flash builder eclipse插件安装

    本来这是一个百度上随处可见的问题,为了使安装过程流畅,特在此处将注意点记下来,方便查看 安装时提示安装程序无法初始化 解决:删除 C:\Program Files (x86)\Common Files ...

  3. Python GIL 系列之再谈Python的GIL

    1. 之前写过一篇<通过实例认识Python的GIL>的文章,感觉有些意犹未尽 2. 这次对例子作了些扩展,进一步的分析GIL对Python程序的影响 2.1 先来看例子: [python ...

  4. Ajax.Net之数据类型

    这个例子是按照Ajax.Net的作者的Data Type示例做的,大概意思是能够把好多的数据类型做为参数传递给服务器端的Ajax.Net方法,也能够从Ajax.Net服务器端方法返回同样的数据类型.特 ...

  5. Java之节点流和处理流(Buffered字节字符处理流)

    文章目录 前言 基本介绍 Buffered字符处理流 BufferedReader缓冲字符输入流 BufferedWriter缓冲字符输出流 文件拷贝 Buffered字节处理流 文件拷贝(二进制文件 ...

  6. 87个C#帮助类,各种功能性代码(转载自微信公众号:dotNET全栈开发)

    初衷 网上有各式各样的帮助类,公共类,但是比较零碎,经常有人再群里或者各种社交账号上问我有没有这个helper, 那个helper,于是萌生了收集全部helper的念头,以便日后使用,整个解决方案的文 ...

  7. 安捷伦示波器连接电脑

    调试或者测试电路的过程中,示波器是比不可少的东西,且常需要保存示波器的波形,可以通过一条网线把示波器与电脑连接起来,这样就可以在电脑上方便的保存波形图,怎么实现示波器和电脑连接,我们以安捷伦示波器DS ...

  8. 安卓学习专栏——实战项目酷欧天气(2)遍历全国省市县数据

    步骤 系列文章 前言 1.实现效果 2.项目结构 util包 util包下新建HttpUtil util包下新建Utility 3.新建choose_area.xml布局 4.新建ChooseArea ...

  9. 使用GPIB总线接收数据

    使用GPIB总线接收数据-成功! 首先介绍一下实验室的工作环境:一台装有GPIB接口卡(ADLINK的LPCI-3488A点击资料连接)的电脑,一台ILXLightware FPM-8210 光功率计 ...

  10. 一周玩转示波器(七)

    在电子信息通信类专业学习中,大家都会接触到示波器,之前本人也在各种论坛.博客以及星球内上传过各种示波器的教程.但是发现还是有很多大侠提议需要连载篇来督促自己每日的学习."FPGA技术江湖&q ...

最新文章

  1. Spring Cloud应用开发(四:服务容错保护)
  2. 17.Java5的Exchanger同步工具
  3. php 尾递归,关于尾递归的使用详解
  4. Auto-Machine-Learning初探
  5. Java多线程——Thread Runnable源码解析
  6. 关于为使用ArrayAdapter创建ListView时,使用TextView添加子项的问题
  7. python使用tkinter可以在多个操作系统_在tkinter GUI中使用多个窗口
  8. eclipse jsp没有提示_JSP+Struts2+JDBC+Mysql实现的校园宿舍管理系统
  9. string (KMP+期望DP)
  10. STL vector 容器介绍
  11. JFinalConfig
  12. C++之初始化列表的一个笔记
  13. c语言loop until用法,流程控制中的while、until、for循环
  14. 全球嵌入式技术与 IoT 产业回顾与展望 | 技术头条
  15. Linux管理员手册
  16. C语言 链表 3个结点,一个关于C语言链表头结点的问题
  17. C语言知识点总体梳理(知识点)
  18. 从头配置一台医学影像处理的电脑 Ubuntu20.04
  19. win10 更新计算机时间,win10电脑时间不能自动更新
  20. 如何在 R 中计算二项式置信区间

热门文章

  1. 这6款APP和游戏,是苹果选出的2019年年度最佳
  2. 关于企业工业控制系统的网络安全保护设计方案
  3. 一年中所有节日的排列顺序_我国一年中的传统节日。(按顺序)
  4. 趋势科技专访:让员工选我所爱,爱我所选
  5. android仿京东跑马灯,RecyclerView实现跑马灯效果
  6. LaTeX使用tikz-imagelabels宏包在图片上添加标签、文字等
  7. 《地平线:零之曙光》——游戏体验和主观评价
  8. mscorsvw.exe
  9. @Deprecated
  10. 2021免费在线客服系统排行