C++标准库之Unities-笔记2
来源:互联网 发布:如何查看网卡mac地址 编辑:程序博客网 时间:2024/05/21 12:25
声明:这个博文所有内容均来自于C++标准库-自学教程与参考手册(第二版)英文版 上册。如果转载,务必附带本声明,请注明出处。
1、pairs
pair是C++里面很好用的,在Qt里经常使用(虽然也有Qt自带的)。
pair其实很简单,就是将两个元素做成一对,这对于存储两个有关联的数据,是很有意义的。存储的元素类型可以是C++允许的任何类型。
#include <iostream>using std::cout;using std::endl;int main(){ typedef std::pair<int, float> IntFloatPair; IntFloatPair p(42, 3.141592); std::cout << std::get<0>(p) << std::endl << std::get<1>(p); // 42 std::cout << std::tuple_size<IntFloatPair>::value << std::endl; //3.1415926 //std::cout << std::tuple_element<0, IntFloatPair>::type << std::endl; auto p2 = std::make_pair(42, '@'); std::cout << p2.first << "\t" << p2.second << std::endl; std::cout << "p2.second's type:"<< typeid(p2.second).name() << std::endl; int i = 0; auto p3 = std::make_pair(std::ref(i), std::ref(i)); //传引用的值 ++p3.first; std::cout << p3.first << ' ' << std::endl; ++p3.second; std::cout << p3.second << std::endl; return 0;}
2、tuple
#include <iostream>#include <complex>#include <tuple>#include <string>int main(){ std::tuple<std::string, int, int, std::complex<double>> t; std::tuple<int, float, std::string> t1(41, 6.3, "nico"); std::cout << std::get<0>(t1) << " " << std::get<1>(t1) << " " << std::get<2>(t1) << std::endl; auto t2 = std::make_tuple(22, 44, "nico"); std::get<1>(t1) = std::get<1>(t2); std::cout << std::get<1>(t1) << std::endl;}
可以看到std::make_tuple虽然能比较方便的创建一个tuple,但是它创建的内部元素类型不见得是你想要的,它是通过推导得到的类型。最好还是显示地指定。
还有一个就是std::tie(),这个函数直接能够创建一个引用。
std::tie(std::get<0>(t), std::get<1>(t), std::get<2>(t)) = t1;//将t1的值分别传递给t的前三个 std::cout << std::get<0>(t) << " " << std::get<1>(t) << " " << std::get<2>(t) << std::endl;
其他特性:
int main(){ auto mytuple = std::make_tuple(10, 'a'); std::tuple_element<0, decltype(mytuple)>::type first = std::get<0>(mytuple); std::tuple_element<1, decltype(mytuple)>::type second = std::get<1>(mytuple); std::cout << "mytuple contains: " << first << " and " << second << '\n'; int n = 0; auto t = std::tuple_cat(std::make_tuple(42, 7.7, "hello"), std::tie(n)); std::cout << std::get<3>(t) << std::endl; std::tuple < int, float, std::string > t2(77, 1.1, "more light"); //std::cout << t2 << std::endl; //编译不能通过, VS2013 return 0;}
0 0
- C++标准库之Unities-笔记2
- 《C标准库》学习笔记
- C&C++之标准库
- C&C++之标准库
- c 学习笔记之 c IO标准库函数
- C标准库之零:C标准库概述
- c++primer学习笔记2 - 标准库类型
- C标准库的setlocale()用法笔记
- C标准库的setlocale()用法笔记
- C标准库的setlocale()用法笔记
- C标准库的setlocale()用法笔记
- C标准库的setlocale()用法笔记
- C标准库的setlocale()用法笔记
- C标准库的setlocale()用法笔记
- C标准库的setlocale()用法笔记
- C标准库的setlocale()用法笔记
- C标准库的setlocale()用法笔记
- C标准库的setlocale()用法笔记
- RedHat5.5配置
- 程序员的级别
- bash: service: command not found 错误的解决方法
- LRUCache源码学习
- yum的错误
- C++标准库之Unities-笔记2
- UVa 10622 - Perfect P-th Powers(数论)
- Grammar API
- Java实现网页截屏
- 动漫推荐之东京暗鸦
- Linux系统命令缩写
- LatticeGrammar API
- 【PAT】1030. 完美数列(25)
- Spring 学习笔记 - 1