How to store Data Triplet in a Vector in C++?

Given a vector, how can we store 3 elements in one cell of vector.

Examples:

Input : 2 5 10
        3 6 15
Output : (2, 5, 10)  // In first cell of vector
         (3, 6, 15)  // In second cell of vector

One solution is to create a user defined class or structure. We create a structure with three members, then create a vector of this structure.

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to store data triplet in a vector
// using user defined structure.
#include<bits/stdc++.h>
using namespace std;
  
struct Test
{
   int x, y, z;
};
  
int main()
{
    // Creating a vector of Test
    vector<Test> myvec;
  
    // Inserting elements into vector. First
    // value is assigned to x, second to y
    // and third to z.
    myvec.push_back({2, 31, 102});
    myvec.push_back({5, 23, 114});
    myvec.push_back({9, 10, 158});
  
    int s = myvec.size();
    for (int i=0;i<s;i++)
    {
        // Accessing structure members using their
        // names.
        cout << myvec[i].x << ", " << myvec[i].y
             << ", " << myvec[i].z << endl;
    }
    return 0;
}

chevron_right


Output :

2, 31, 102
5, 23, 114
9, 10, 158

 

Another solution is to use pair class in C++ STL. We make a pair with first element as normal element and second element as another pair, therefore storing 3 elements simultaneously.

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to store data triplet in a vector
// using pair class
#include<bits/stdc++.h>
using namespace std;
  
int main()
{
    // We make a pair with first element as normal
    // element and second element as another pair.
    // therefore 3 elements simultaneously.
    vector< pair<int, pair<int, int> > > myvec;
  
    // For inserting element in pair use
    // make_pair().
    myvec.push_back(make_pair(2, make_pair(31, 102)));
    myvec.push_back(make_pair(5, make_pair(23, 114)));
    myvec.push_back(make_pair(9, make_pair(10, 158)));
  
    int s = myvec.size();
    for (int i=0; i<s; i++)
    {
        // The elements can be directly accessed
        // according to first or second element
        // of the pair.
        cout << myvec[i].first << ", " << myvec[i].second.first
              << ", " << myvec[i].second.second << endl;
    }
    return 0;

chevron_right


Output:

2, 31, 102
5, 23, 114
9, 10, 158

This article is contributed by Jatin Goyal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


2


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.