c++标准库读书笔记--005Day

Class Pair和Class Tuple


// demo5.1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <tuple>

typedef std::pair<int, double> InfoPair;
typedef std::tuple<int, std::string, double> InfoTuple;

std::ostream& operator <<(std::ostream& os, InfoPair& p)                //重载<<运算符
{
	return os << "[" <<p.first << "," << p.second << "]" << std::endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
	InfoPair p(3,4);
	InfoTuple t(5,"gg",4.4);

	std::cout << p.first << std::endl;                            //直接访问元素的值
	std::cout << std::get<0>(p) << std::endl;
	std::cout << std::get<0>(t) << std::endl;
	std::cout << std::get<1>(t) << std::endl;
	std::cout << std::get<2>(t) << std::endl;

	std::cout << std::tuple_size<InfoPair>::value << std::endl;      //元素的个数
	std::cout << std::tuple_size<InfoTuple>::value << std::endl;				 //元素的个数
	std::cout << (std::tuple_element<0, InfoPair>::type)5.5 << std::endl;//元素的类型
	std::cout << (std::tuple_element<2, InfoTuple>::type)5.5 << std::endl;
	std::cout << p << std::endl;                                   //重载<<

	std::pair<char, char> p1 = std::make_pair (‘x‘, ‘y‘);
	char c;
	std::tie(std::ignore, c) = p1;
	std::cout << c << std::endl;                               //tie接口

	auto t1 = std::make_tuple(12,"1e2",1);
	std::string s;
	std::tuple<std::string&> t2(s);
	std::get<0>(t2) = "guojun";
	std::cout << s << std::endl;                         //tuple元素类型可以引用

	std::string s1;
	int i;
	std::pair<std::string,int&> t3(s1,i);              //pair元素类型可以引用                               
	std::get<0>(t3) = "guojun";
	std::get<1>(t3) = 1000;
	std::cout << s1 << std::endl;
	std::cout << i << std::endl;

//	auto t4 = std::make_tuple(ref(s));
//	auto t5 = std::make_tuple(cref(s));
	auto t6 = std::make_tuple(s);
	std::get<0>(t6) = "hehhe";
	std::cout << s << std::endl;

	std::tie(std::ignore,s,i) = t1;                           //tie接口                           
	std::cout << s << std::endl;
	std::cout << i << std::endl;

	int n = 99;
	std::tie(n) = std::make_tuple(0);
	std::cout << n << std::endl;

	int n1 = 100;
	auto tt = std::tuple_cat(std::make_tuple(1, 1, "de", 1), std::tie(n1));
	std::cout << std::get<0>(tt) << std::endl;
	std::cout << std::get<1>(tt) << std::endl;
	std::cout << std::get<2>(tt) << std::endl;
	std::cout << std::get<3>(tt) << std::endl;
	std::cout << std::get<4>(tt) << std::endl;

	system("pause");
	return 0;
}

时间: 2024-08-10 15:07:37

c++标准库读书笔记--005Day的相关文章

c++标准库读书笔记--004Day

a.崭新的Template特性 // demo3.5.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void show() { } template <typename T,typename... Types> void show(const T& firstArg,const Types&... args) { cou

SPL(PHP标准库)-----------------------个人笔记

<?php     ****************************************PHP高级程序员必修课******************************************************* //SPL:PHP标准库,Standand  PHP  Library   解决常见问题的一组接口与类的集合 /* 问题:数学建模/数据结构,解决数据如何存储的问题 元素便利,数据如何查看的问题 常用方法的统一调用(通用方法,自定义遍历) 类定义的自动装载 */ /

《C++primer》v5 第8章 IO库 读书笔记 习题答案

8.1.8.2 这一章不咋会啊.. istream &read(istream &is) { int a; auto old_state=is.rdstate(); is.clear(); is>>a; is.setstate(old_state); return is; } int main() { read(cin); return 0; } 8.3 读到eof或错误类型的时候 8.4 #include<fstream> using namespace std;

了解ado.net 的相关内库--读书笔记

以下内容来自此书"精通c#与.net 4.0数据库开发-清华大学出版社"如有清泉还请联系删除 "  ado.net是一组向 .net程序员公开数据访问服务的接口(包括类.结构体.接口等)ado.net为创建分布式数据 共享应用程序提供了一组丰富的组件,对mic sql ser 和xml等数据源及通过ole db和xml公开的数据源提供了一致的访问. " ado.net 只是一个组件,是.net框架的一部分,有一组工具和类库组成" ado.net提供的程序中

读书笔记-APUE第三版-(5)标准IO库

ISO C标准I/O库使用流的概念读写文件.流是对数据传输的抽象,可以把流理解为从起点到终点间的字节序列. 标准I/O库通过维护进程空间内的缓冲区,减少read/write系统调用次数来提高I/O效率.之前介绍的Unbuffered I/O和文件描述符fd打交道,标准I/O则使用FILE指针. typedef struct{ short level;/*缓冲区满程度*/ unsigned flags;/*文件打开状态标志*/ char fd;/*文件描述符*/ unsigned char hol

C++ Primer 读书笔记: 第8章 标准IO库

第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于读写存储在内存中的string对象.在fstream和sstream里定义的美中类型都是从iostream头文件中定义的相关类型派生而来. 2. 流对象不能复制,因此不能存储在vector容器中 3. 形参或返回类型也不能为流类型.如果需要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用.

读书笔记 effective c++ Item 54 让你自己熟悉包括TR1在内的标准库

1. C++0x的历史渊源 C++标准——也就是定义语言的文档和程序库——在1998被批准.在2003年,一个小的“修复bug”版本被发布.然而标准委员会仍然在继续他们的工作,一个“2.0版本”的C++标准预计在2009年被发布(虽然所有的工作很有可能在2007年底被完成).直到现在,发布下一版C++的预计年份还没有被确定,这就解释了为什么人们把下一版C++叫做“C++0x”——C++的200x年版本. C++0x可能会包含一些有趣的新的语言特性,但是大多数新C++功能将会以标准库附加物的形式被

C++ Primer 第四版读书笔记(二)之标准库类型

C++定义了一个内容丰富的抽象数据类型标准库,其中最重要的标准库类型是string和vector,它们分别定义了大小可变的字符串和集合.string和vector往往将迭代器用作配套类型,用于访问string中的字符,或者vector中的元素. 另一种标准库类型为bitset,提供了一种抽象方法来操作位的集合. string类型支持长度可变的字符串,vector用于保存一组指定类型的对象. bitset类标准库类型提供了更方便和合理有效的语言级的抽象设施.通过这个类可以把某个值当作位的集合来处理

C++ Primer 第四版读书笔记(七)之标准IO库

C++的输入/输出由标准库提供.标准库定义了一组类型,支持对文件和控制窗口等设备的读写(IO).还定义了其他一些类型,使string对象能够像文件一样操作,从而使我们无需IO就能实现数据与字符之间的转换.一般来说,类的设计者还可以很方便地使用IO标准库设施读写自定义类的对象.类类型通常使用IO标准库为内置类型定义的操作符和规则来进行读写. 一.面向对象的标准库 迄今为止,我们已经使用IO类型和对象读写数据流,它们常用于与用户控制窗口的交互.当然,实际的程序不能仅限于对控制窗口的IO,通常还需要读