C++文档阅读笔记-Tuples in C++
Posted IT1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++文档阅读笔记-Tuples in C++相关的知识,希望对你有一定的参考价值。
tuple是什么
tuple是个对象,这个对象能放很多元素,这些元素可以是不同类型的,这些元素在tuple中存储的顺序和放入tuple时的顺序一致。
tuple的操作
1.get():可以获取tuples中的数据并且也能修改他们,通过索引下标能直接获取tuple中的元素。
2.make_tuple():设置tuple中的值,设置的顺序就是索引的顺序,这里要注意,程序员是从0开始计数的。
如下代码:
// C++ code to demonstrate tuple, get() and make_pair()
#include<iostream>
#include<tuple> // for tuple
using namespace std;
int main()
// Declaring tuple
tuple <char, int, float> geek;
// Assigning values to tuple using make_tuple()
geek = make_tuple('a', 10, 15.5);
// Printing initial tuple values using get()
cout << "The initial values of tuple are : ";
cout << get<0>(geek) << " " << get<1>(geek);
cout << " " << get<2>(geek) << endl;
// Use of get() to change values of tuple
get<0>(geek) = 'b';
get<2>(geek) = 20.5;
// Printing modified tuple values
cout << "The modified values of tuple are : ";
cout << get<0>(geek) << " " << get<1>(geek);
cout << " " << get<2>(geek) << endl;
return 0;
输出如下:
The initial values of tuple are : a 10 15.5
The modified values of tuple are : b 10 20.5
上面的代码中使用get()函数后修改了第一个元素的值和第三个元素的值。
3.tuple_size():返回当前tuple中元素的个数。
//C++ code to demonstrate tuple_size
#include<iostream>
#include<tuple> // for tuple_size and tuple
using namespace std;
int main()
// Initializing tuple
tuple <char,int,float> geek(20,'g',17.5);
// Use of size to find tuple_size of tuple
cout << "The size of tuple is : ";
cout << tuple_size<decltype(geek)>::value << endl;
return 0;
输出如下:
The size of tuple is : 3
4.swap():交换2个tuples的值。
//C++ code to demonstrate swap()
#include<iostream>
#include<tuple> // for swap() and tuple
using namespace std;
int main()
// Initializing 1st tuple
tuple <int,char,float> tup1(20,'g',17.5);
// Initializing 2nd tuple
tuple <int,char,float> tup2(10,'f',15.5);
// Printing 1st and 2nd tuple before swapping
cout << "The first tuple elements before swapping are : ";
cout << get<0>(tup1) << " " << get<1>(tup1) << " "
<< get<2>(tup1) << endl;
cout << "The second tuple elements before swapping are : ";
cout << get<0>(tup2) << " " << get<1>(tup2) << " "
<< get<2>(tup2) << endl;
// Swapping tup1 values with tup2
tup1.swap(tup2);
// Printing 1st and 2nd tuple after swapping
cout << "The first tuple elements after swapping are : ";
cout << get<0>(tup1) << " " << get<1>(tup1) << " "
<< get<2>(tup1) << endl;
cout << "The second tuple elements after swapping are : ";
cout << get<0>(tup2) << " " << get<1>(tup2) << " "
<< get<2>(tup2) << endl;
return 0;
输出:
The first tuple elements before swapping are : 20 g 17.5
The second tuple elements before swapping are : 10 f 15.5
The first tuple elements after swapping are : 10 f 15.5
The second tuple elements after swapping are : 20 g 17.5
5.tie():把tuples中某个元素分离出来,如下面tie()中的两个变量,一个带有“ignore”,一个无“ignore”
如下代码:
// C++ code to demonstrate working of tie()
#include<iostream>
#include<tuple> // for tie() and tuple
using namespace std;
int main()
// Initializing variables for unpacking
int i_val;
char ch_val;
float f_val;
// Initializing tuple
tuple <int,char,float> tup1(20,'g',17.5);
// Use of tie() without ignore
tie(i_val,ch_val,f_val) = tup1;
// Displaying unpacked tuple elements
// without ignore
cout << "The unpacked tuple values (without ignore) are : ";
cout << i_val << " " << ch_val << " " << f_val;
cout << endl;
// Use of tie() with ignore
// ignores char value
tie(i_val,ignore,f_val) = tup1;
// Displaying unpacked tuple elements
// with ignore
cout << "The unpacked tuple values (with ignore) are : ";
cout << i_val << " " << f_val;
cout << endl;
return 0;
输出:
The unpacked tuple values (without ignore) are : 20 g 17.5
The unpacked tuple values (with ignore) are : 20 17.5
6.tuple_cat():将2个tuples构造成一个新的tuple
代码如下:
// C++ code to demonstrate working of tuple_cat()
#include<iostream>
#include<tuple> // for tuple_cat() and tuple
using namespace std;
int main()
// Initializing 1st tuple
tuple <int,char,float> tup1(20,'g',17.5);
// Initializing 2nd tuple
tuple <int,char,float> tup2(30,'f',10.5);
// Concatenating 2 tuples to return a new tuple
auto tup3 = tuple_cat(tup1,tup2);
// Displaying new tuple elements
cout << "The new tuple elements in order are : ";
cout << get<0>(tup3) << " " << get<1>(tup3) << " ";
cout << get<2>(tup3) << " " << get<3>(tup3) << " ";
cout << get<4>(tup3) << " " << get<5>(tup3) << endl;
return 0;
输出如下:
The new tuple elements in order are : 20 g 17.5 30 f 10.5
以上是关于C++文档阅读笔记-Tuples in C++的主要内容,如果未能解决你的问题,请参考以下文章
C++文档阅读笔记-Understanding nullptr in C++
C++文档阅读笔记-Understanding nullptr in C++
C++文档阅读笔记-Smart Pointers in C++ and How to Use Them