C++笔记 不断更新
来源:互联网 发布:怎样在淘宝上传宝贝 编辑:程序博客网 时间:2024/05/16 09:10
pair的用法
pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。
2 make_pair函数
template pair make_pair(T1 a, T2 b) { return pair(a, b); }
很明显,我们可以使用pair的构造函数也可以使用make_pair来生成我们需要的pair。 一般make_pair都使用在需要pair做参数的位置,可以直接调用make_pair生成pair对象很方便,代码也很清晰。 另一个使用的方面就是pair可以接受隐式的类型转换,这样可以获得更高的灵活度。灵活度也带来了一些问题如:
std::pair<int, float>(1, 1.1);
std::make_pair(1, 1.1);
是不同的,第一个就是float,而第2个会自己匹配成double。
类模板:template <class T1, class T2> struct pair
参数:T1是第一个值的数据类型,T2是第二个值的数据类型。
功能:pair将一对值组合成一个值,这一对值可以具有不同的数据类型(T1和T2),两个值可以分别用pair的两个公有函数first和second访问。
具体用法:
1.定义(构造):
1 pair<int, double> p1; //使用默认构造函数2 pair<int, double> p2(1, 2.4); //用给定值初始化3 pair<int, double> p3(p2); //拷贝构造函数
2.访问两个元素(通过first和second):
1 pair<int, double> p1; //使用默认构造函数2 p1.first = 1;3 p1.second = 2.5;4 cout << p1.first << ' ' << p1.second << endl;
输出结果:1 2.5
3.赋值operator = :
(1)利用make_pair:
1 pair<int, double> p1;2 p1 = make_pair(1, 1.2);
(2)变量间赋值:
pair<int, double> p1(1, 1.2); pair<int, double> p2 = p1;
std::unordered_map(C++11新特性)
std::map对应的数据结构是红黑树。红黑树是一种近似于平衡的二叉查找树,里面的数据是有序的。在红黑树上做查找、插入、删除操作的时间复杂度为O(logN)。而std::unordered_map对应哈希表,哈希表的特点就是查找效率高,时间复杂度为常数级别O(1), 而额外空间复杂度则要高出许多。所以对于需要高效率查询的情况,使用std::unordered_map容器,但是std::unordered_map对于迭代器遍历效率并不高。而如果对内存大小比较敏感或者数据存储要求有序的话,则可以用std::map容器。- C/C++ 基础知识学习笔记 (不断更新中)
- linux C 学习中的一些小笔记,不断更新
- object-c基础知识(不断更新)
- MySql使用笔记,不断更新
- linux 学习笔记《不断更新》
- Java解惑笔记<不断更新>
- Python学习笔记---不断更新---
- python学习笔记,不断更新
- android布局笔记,不断更新
- uCOSII学习笔记,不断更新
- altcoin笔记------不断更新
- C++笔记 不断更新
- C/C++基础知识收集(不断更新)
- C++:Debug经验总结(不断更新)
- C 字符串 函数 (不断更新)
- C/C++常见问题( 不断更新)
- C++ 学习积累-不断更新
- SU 学习笔记 不断更新ing
- 查看maven中jar的依赖包
- 用Scheme解释器项目来了解Java(三)
- 22. yii 2 sql
- MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(六)
- 教育类App原型分享-Mimo
- C++笔记 不断更新
- ios runtime 之消息发送机制三次拯救机会
- 为什么有些mp4不能在html5中video标签播放
- SQL2008安装重启失败解决方法
- maven报错问题
- 用Python从零开始创建区块链
- tensorflow实战之 简单卷积神经网络
- Java并发编程:线程池的使用
- Spring MVC之@RequestBody, @ResponseBody 详解