mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-08-13 10:14:58 +02:00
Merge pull request #2119 from Jaskamalkainth/master
[C++ / en] Added Tuple.
This commit is contained in:
@@ -955,6 +955,52 @@ v.push_back(Foo()); // New value is copied into the first Foo we inserted
|
|||||||
// explanation of why this works.
|
// explanation of why this works.
|
||||||
v.swap(vector<Foo>());
|
v.swap(vector<Foo>());
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////
|
||||||
|
// Tuples (C++11 and above)
|
||||||
|
///////////////////////////////////////
|
||||||
|
|
||||||
|
#include<tuple>
|
||||||
|
|
||||||
|
// Conceptually, Tuples are similar to old data structures (C-like structs) but instead of having named data members ,
|
||||||
|
// its elements are accessed by their order in the tuple.
|
||||||
|
|
||||||
|
// We start with constructing a tuple.
|
||||||
|
// Packing values into tuple
|
||||||
|
auto first = make_tuple(10,'A');
|
||||||
|
const int maxN = 1e9;
|
||||||
|
const int maxL = 15;
|
||||||
|
auto second = make_tuple(maxN,maxL);
|
||||||
|
|
||||||
|
// printing elements of 'first' tuple
|
||||||
|
cout << get<0>(first) << " " << get<1>(first) << "\n"; //prints : 10 A
|
||||||
|
|
||||||
|
// printing elements of 'second' tuple
|
||||||
|
cout << get<0>(second) << " " << get<1>(second) << "\n"; // prints: 1000000000 15
|
||||||
|
|
||||||
|
// Unpacking tuple into variables
|
||||||
|
|
||||||
|
int first_int;
|
||||||
|
char first_char;
|
||||||
|
tie(first_int,first_char) = first;
|
||||||
|
cout << first_int << " " << first_char << "\n"; // prints : 10 A
|
||||||
|
|
||||||
|
// We can also create tuple like this.
|
||||||
|
|
||||||
|
tuple<int,char,double> third (11,'A',3.14141);
|
||||||
|
// tuple_size returns number of elements in a tuple (as a constexpr)
|
||||||
|
|
||||||
|
cout << tuple_size < decltype(third) >::value << "\n"; // prints: 3
|
||||||
|
|
||||||
|
// tuple_cat concatenates the elements of all the tuples in the same order.
|
||||||
|
|
||||||
|
auto concatenated_tuple = tuple_cat( first, second ,third);
|
||||||
|
// concatenated_tuple becomes = (10,'A',1e9,15,11,'A',3.14141)
|
||||||
|
|
||||||
|
cout << get<0>(concatenated_tuple) << "\n"; // prints: 10
|
||||||
|
cout << get<3>(concatenated_tuple) << "\n"; // prints: 15
|
||||||
|
cout << get<5>(concatenated_tuple) << "\n"; // prints: 'A'
|
||||||
|
|
||||||
```
|
```
|
||||||
Further Reading:
|
Further Reading:
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user