bool sortcol(const vector<int>& v1, const vector<int>& v2)
{
return v1[1] < v2[1];
}
sort(vect.begin(), vect.end(), sortcol);
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
bool sortcol(const vector<int>& v1, const vector<int>& v2)
{
return v1[1] < v2[1];
}
int main()
{
vector<vector<int> > vect{ { 3, 5, 1 },
{ 4, 8, 6 },
{ 7, 2, 9 } };
int m = vect.size();
int n = vect[0].size();
cout << "The Matrix before sorting is:
";
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++)
cout << vect[i][j] << " ";
cout << endl;
}
sort(vect.begin(), vect.end(), sortcol);
cout << "The Matrix after sorting is:
";
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++)
cout << vect[i][j] << " ";
cout << endl;
}
return 0;
}
9
The built-in arrays of C and C++ are very inflexible, among other things they cannot be assigned.
Your best option would be the 'array' class from the C++ standard library, at least for the inner dimension:
array<int, 2> a[5] = { { 20, 11 },
{ 10, 20 },
{ 39, 14 },
{ 29, 15 },
{ 22, 23 } };
sort( a, a + 5 );
Edit: Some more explanations.
Here we use the property of std::array that '<' by default compares them lexicographically, i.e. starts with the first element. In order to sort things differently we have to come up with an comparator object, so if you want to use the second column as sort key you have to do this:
auto comp = []( const array<int, 2>& u, const array<int, 2>& v )
{ return u[1] < v[1]; };
sort( a, a + 5, comp );
And as mentioned in the first comment, sort(a, a+5 ... is just an ugly short form for the cleaner sort(std::begin(a), std::end(a) ...
std::sort(vector1.begin(),
vector1.end(),
[] (const std::vector<double> &a, const std::vector<double> &b)
{
return a[3] < b[3];
});
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<vector<int> > vect{ { 3, 5, 1 },
{ 4, 8, 6 },
{ 7, 2, 9 } };
int m = vect.size();
int n = vect[0].size();
cout << "The Matrix before sorting 1st row is:
";
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++)
cout << vect[i][j] << " ";
cout << endl;
}
sort(vect[1].begin(), vect[1].end());
cout << "The Matrix after sorting 1st row is:
";
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++)
cout << vect[i][j] << " ";
cout << endl;
}
return 0;
}