We have discussed some of the cases of sorting 2D vector in below set 1 and set 2.
Sorting 2D Vector in C++ | Set 1 (By row and column)
Sorting 2D Vector in C++ | Set 2 (In descending order by row and column)
More cases are discussed in this article
As mentioned in one of the article publised of this set, A 2D Vector can also have rows with different number of columns. This property is unlike the 2D Array in which all rows have same number of columns. 二维的vector的行有不同的列数,这和二维数组不同,它行和列有相同的值。
// C++ code to demonstrate 2D Vector
// with different no. of columns
#include<iostream>
#include<vector> // for 2D vector
using namespace std;
int main()
{
// Initializing 2D vector "vect" with
// values
vector< vector<int> > vect{{1, 2},
{3, 4, 5},
{6}};
// Displaying the 2D vector
for (int i=0; i<vect.size(); i++)
{
//loop till the size of particular
//row
for (int j=0; j<vect[i].size() ;j++)
cout << vect[i][j] << " ";
cout << endl;
}
return 0;
}
Output:
1 2
3 4 5
6
Case 5 : Sorting the 2D Vector on basis of no. of columns in row in ascending order. 根据列数进行二维的vector的排序。
In this type of sorting, 2D vector is sorted on basis of a no. of column in ascending order. This is achieved by passing a third argument in “sort()” as a call to user defined explicit function. 这种排序中,二维vector的排序是基于列数进行升序排序。
// C++ code to demonstrate sorting of
// 2D vector on basis of no. of columns
// in ascending order
#include<iostream>
#include<vector> // for 2D vector
#include<algorithm> // for sort()
using namespace std;
// Driver function to sort the 2D vector
// on basis of a no. of columns in
// ascending order
bool sizecom(const vector<int>& v1, const vector<int>& v2)
{
return v1.size() < v2.size();
}
int main()
{
// Initializing 2D vector "vect" with
// values
vector< vector<int> > vect{{1, 2},
{3, 4, 5},
{6}};
// Displaying the 2D vector before sorting
cout << "The Matrix before sorting is:\n";
for (int i=0; i<vect.size(); i++)
{
//loop till the size of particular
//row
for (int j=0; j<vect[i].size() ;j++)
cout << vect[i][j] << " ";
cout << endl;
}
//Use of "sort()" for sorting on
//basis of no. of columns in
//ascending order.
sort(vect.begin(), vect.end(), sizecom);
// Displaying the 2D vector after sorting
cout << "The Matrix after sorting is:\n";
for (int i=0; i<vect.size(); i++)
{
//loop till the size of particular
//row
for (int j=0; j<vect[i].size() ;j++)
cout << vect[i][j] << " ";
cout << endl;
}
return 0;
}
Output:
The Matrix before sorting is:
1 2
3 4 5
6
The Matrix after sorting is:
6
1 2
3 4 5
Case 6 : Sorting the 2D Vector on basis of no. of columns in row in descending order.
In this type of sorting, 2D vector is sorted on basis of a no. of column in descending order. This is achieved by passing a third argument in “sort()” as a call to user defined explicit function. 这种排序中,二维vector是基于列数进行降序排序。
// C++ code to demonstrate sorting of
// 2D vector on basis of no. of columns
// in descending order
#include<iostream>
#include<vector> // for 2D vector
#include<algorithm> // for sort()
using namespace std;
// Driver function to sort the 2D vector
// on basis of a no. of columns in
// descending order
bool sizecom(const vector<int>& v1, const vector<int>& v2)
{
return v1.size() > v2.size();
}
int main()
{
// Initializing 2D vector "vect" with
// values
vector< vector<int> > vect{{1, 2},
{3, 4, 5},
{6}};
// Displaying the 2D vector before sorting
cout << "The Matrix before sorting is:\n";
for (int i=0; i<vect.size(); i++)
{
//loop till the size of particular
//row
for (int j=0; j<vect[i].size() ;j++)
cout << vect[i][j] << " ";
cout << endl;
}
//Use of "sort()" for sorting on
//basis of no. of columns in
//descending order.
sort(vect.begin(), vect.end(), sizecom);
// Displaying the 2D vector after sorting
cout << "The Matrix after sorting is:\n";
for (int i=0; i<vect.size(); i++)
{
//loop till the size of particular
//row
for (int j=0; j<vect[i].size() ;j++)
cout << vect[i][j] << " ";
cout << endl;
}
return 0;
}
Output:
The Matrix before sorting is:
1 2
3 4 5
6
The Matrix after sorting is:
3 4 5
1 2
6
This article is contributed by Manjeet Singh .If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to [email protected]. 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.
Recommended Posts:
- Sorting a vector in C++
- Sorting 2D Vector in C++ | Set 1 (By row and column)
- Sorting Vector of Pairs in C++ | Set 1 (Sort by first and second)
- Sorting 2D Vector in C++ | Set 2 (In descending order by row and column)
- Sorting of Vector of Tuple in C++ (Descending Order)
- Sorting of Vector of Tuple in C++ (Ascending Order)
- Sorting Vector of Pairs in C++ | Set 2 (Sort in descending order by first and second)
- Sorting rows of matrix in ascending order followed by columns in descending order
- Sorting rows of matrix in descending order followed by columns in ascending order
- Know Your Sorting Algorithm | Set 1 (Sorting Weapons used by Programming Languages)
- Know Your Sorting Algorithm | Set 2 (Introsort- C++’s Sorting Weapon)
- vector::front() and vector::back() in C++ STL
- vector :: cbegin() and vector :: cend() in C++ STL
- vector::push_back() and vector::pop_back() in C++ STL
- vector::crend() & vector::crbegin() with example