Sorting Vector of Arrays in C++
Given a vector of arrays, the task is to sort them.
Examples:
Input: [[1, 2, 3], [10, 20, 30], [30, 60, 90], [10, 20, 10]]
Output: [[1, 2, 3], [10, 20, 10], [10, 20, 30], [30, 60, 90]]Input: [[7, 2, 9], [5, 20, 11], [6, 16, 19]]
Output: [[5, 20, 11], [6, 16, 19], [7, 2, 9]]
Approach:
To sort the Vector of Arrays using the built-in sort() in C++ STL it needs an array template which defined in a boost libraries, to store vector of arrays.
std:: vector<std:: array >
where, std::array is a container that encapsulates fixed size arrays.
In this problem, sort() function takes two arguments first(begin position of the vector) and second(end position of the vector) to sorts a vector of arrays (items with random access). Below is a simple program to show the working of sort().
CPP
// C++ program to sort the vector // of array by sort() function // using STL in c++ #include <algorithm> #include <array> #include <iostream> #include <vector> using namespace std; #define N 3 // Function to print vector of arrays void print(vector<array< int , N> > vect) { // Displaying the vector of arrays // ranged for loop is supported for (array< int , N> i : vect) { for ( auto x : i) cout << x << " " ; cout << endl; } } // Driver code int main() { // std::array is a container that // encapsulates fixed size arrays. vector<array< int , N> > vect; vect.push_back({ 1, 2, 3 }); vect.push_back({ 10, 20, 30 }); vect.push_back({ 30, 60, 90 }); vect.push_back({ 10, 20, 10 }); cout << "Vector of arrays" << " before sorting: \n" ; print(vect); // Sorting the vector using built-in sort() // defined in algorithm header in C++ STL sort(vect.begin(), vect.end()); cout << "Vector of arrays" << " after sorting: \n" ; print(vect); // End of program return 0; } |
Vector of arrays before sorting: 1 2 3 10 20 30 30 60 90 10 20 10 Vector of arrays after sorting: 1 2 3 10 20 10 10 20 30 30 60 90