C++下的utility
1.utility
定义标准模板库 (STL) 类型、 函数和运算符,以帮助构建和管理的对象,这两个对象视为就可以像在需要时可对 。
备注
对已得到广泛应用的标准c++库中。 它们是必需的作为参数和返回值的各种功能和元素类型的容器 (例如类映射 和 multimap 类。 <utility>标题将自动包含通过 <map> 要帮助管理其键/值对键入的元素。
2.使用
头文件:#include <utility>
类:pair
函数:
- forward 保留引用类型(或者lvalue或rvalue) 参数从被遮掩完美转发。
- get 获取从元素的函数pair对象。
- make_pair 用于构造类型的对象的模板 helper 函数pair,其中的组件类型基于作为参数传递的数据类型。
- move 返回传入参数作为rvalue的引用。
- 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相关推荐
- ansa打开catia文件_关于CATIA文件格式的那些事儿
打开一个CATIA文件,在另存为的保存类型列表中选择,可以看到当前文件可以保存的数据格式:比如常用的STL,IGS,Model,STP,3dxml,cgr等 下面将对常见的文件格式进行介绍,希望对大家 ...
- flash builder eclipse插件安装
本来这是一个百度上随处可见的问题,为了使安装过程流畅,特在此处将注意点记下来,方便查看 安装时提示安装程序无法初始化 解决:删除 C:\Program Files (x86)\Common Files ...
- Python GIL 系列之再谈Python的GIL
1. 之前写过一篇<通过实例认识Python的GIL>的文章,感觉有些意犹未尽 2. 这次对例子作了些扩展,进一步的分析GIL对Python程序的影响 2.1 先来看例子: [python ...
- Ajax.Net之数据类型
这个例子是按照Ajax.Net的作者的Data Type示例做的,大概意思是能够把好多的数据类型做为参数传递给服务器端的Ajax.Net方法,也能够从Ajax.Net服务器端方法返回同样的数据类型.特 ...
- Java之节点流和处理流(Buffered字节字符处理流)
文章目录 前言 基本介绍 Buffered字符处理流 BufferedReader缓冲字符输入流 BufferedWriter缓冲字符输出流 文件拷贝 Buffered字节处理流 文件拷贝(二进制文件 ...
- 87个C#帮助类,各种功能性代码(转载自微信公众号:dotNET全栈开发)
初衷 网上有各式各样的帮助类,公共类,但是比较零碎,经常有人再群里或者各种社交账号上问我有没有这个helper, 那个helper,于是萌生了收集全部helper的念头,以便日后使用,整个解决方案的文 ...
- 安捷伦示波器连接电脑
调试或者测试电路的过程中,示波器是比不可少的东西,且常需要保存示波器的波形,可以通过一条网线把示波器与电脑连接起来,这样就可以在电脑上方便的保存波形图,怎么实现示波器和电脑连接,我们以安捷伦示波器DS ...
- 安卓学习专栏——实战项目酷欧天气(2)遍历全国省市县数据
步骤 系列文章 前言 1.实现效果 2.项目结构 util包 util包下新建HttpUtil util包下新建Utility 3.新建choose_area.xml布局 4.新建ChooseArea ...
- 使用GPIB总线接收数据
使用GPIB总线接收数据-成功! 首先介绍一下实验室的工作环境:一台装有GPIB接口卡(ADLINK的LPCI-3488A点击资料连接)的电脑,一台ILXLightware FPM-8210 光功率计 ...
- 一周玩转示波器(七)
在电子信息通信类专业学习中,大家都会接触到示波器,之前本人也在各种论坛.博客以及星球内上传过各种示波器的教程.但是发现还是有很多大侠提议需要连载篇来督促自己每日的学习."FPGA技术江湖&q ...
最新文章
- Spring Cloud应用开发(四:服务容错保护)
- 17.Java5的Exchanger同步工具
- php 尾递归,关于尾递归的使用详解
- Auto-Machine-Learning初探
- Java多线程——Thread Runnable源码解析
- 关于为使用ArrayAdapter创建ListView时,使用TextView添加子项的问题
- python使用tkinter可以在多个操作系统_在tkinter GUI中使用多个窗口
- eclipse jsp没有提示_JSP+Struts2+JDBC+Mysql实现的校园宿舍管理系统
- string (KMP+期望DP)
- STL vector 容器介绍
- JFinalConfig
- C++之初始化列表的一个笔记
- c语言loop until用法,流程控制中的while、until、for循环
- 全球嵌入式技术与 IoT 产业回顾与展望 | 技术头条
- Linux管理员手册
- C语言 链表 3个结点,一个关于C语言链表头结点的问题
- C语言知识点总体梳理(知识点)
- 从头配置一台医学影像处理的电脑 Ubuntu20.04
- win10 更新计算机时间,win10电脑时间不能自动更新
- 如何在 R 中计算二项式置信区间