のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

C++ STL 意外に忘れるvectorの並び替え

Sponsored Links

皆さんこんばんは
お元気ですか?私は元気です。

さて、本日はよーく忘れるstlvectorの並び替え方
今回は文章が少ないですがいってみましょう。

まずは普通に

vector<int> vect(5);
vect[0] = 1;vect[1] = 100; vect[2] = 30; vect[3] = 20; vect[4] = 4;

sort(vect.begin(),vect.end());
sort(vect.begin(),vect.end(),greater<int>());

昇順にソートしたい場合

sort(vect.begin(),vect.end());

降順にソートしたい場合

sort(vect.begin(),vect.end(),greater<int>());

vectorの中にpairがあるような状態

vector<pair<int,int> > vect2;
vect2.push_back(make_pair(1, 30));
vect2.push_back(make_pair(4, 20));
vect2.push_back(make_pair(2, 100));
vect2.push_back(make_pair(10, 10));
vect2.push_back(make_pair(8, 7));

sort(vect2.begin(), vect2.end());
sort(vect2.begin(), vect2.end(), greater<pair<int,int> >());

昇順にソート

sort(vect2.begin(), vect2.end());

降順にソート

sort(vect2.begin(), vect2.end(), greater<pair<int,int> >());

ソースコード全文

#include <iostream>
#include <vector>

using namespace std;

void printNormalVector(vector<int> &vect){
	for(int x:vect){
		cout << x << endl;
	}
}

void printPairVector(vector<pair<int,int> > &vect){
	for(auto x:vect){
		cout << x.first << " " << x.second << endl;
	}
}

int main(void){
	vector<int> vect(5);
	vect[0] = 1;vect[1] = 100; vect[2] = 30; vect[3] = 20; vect[4] = 4;

	sort(vect.begin(),vect.end());
	printNormalVector(vect);
	sort(vect.begin(),vect.end(),greater<int>());
	printNormalVector(vect);

	vector<pair<int,int> > vect2;
	vect2.push_back(make_pair(1, 30));
	vect2.push_back(make_pair(4, 20));
	vect2.push_back(make_pair(2, 100));
	vect2.push_back(make_pair(10, 10));
	vect2.push_back(make_pair(8, 7));

	sort(vect2.begin(), vect2.end());
	printPairVector(vect2);
	sort(vect2.begin(), vect2.end(), greater<pair<int,int> >());
	printPairVector(vect2);
}