C++でvector(ベクトル)を並べ替える方法:std::sort()の使い方
C++でvector(可変長配列)を並べ替えるには、標準ライブラリの std::sort() 関数を使用します。この関数は <algorithm> ヘッダーで定義されており、デフォルトでは要素を昇順(小さい順)に並べ替えます。
また、安定ソートを行いたい場合は std::stable_sort を使用します。これは sort() と同じように動作しますが、値が等しい要素同士の相対的な順序を保持する点が異なります。さらに、要件に応じてクイックソートやマージソートなどのアルゴリズムを自前で実装して利用することも可能です。なお、std::sort() の平均計算量は O(N log N) であり、非常に高速に動作します。
アルゴリズム
開始 vector型の v を宣言する 配列形式で v に初期値を設定する 「ソート前の要素」を出力する for (const auto &i : v) 変数 i の値をすべて出力する 「ソート後の要素」を出力する sort(v.begin(), v.end()) を呼び出し、v の全要素を並べ替える for (const auto &i : v) 変数 i の値をすべて出力する 終了
以下は、C++でvectorをソートする最もシンプルな例です。
サンプルコード
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = { 10, 9, 8, 6, 7, 2, 5, 1 };
cout << "Elements before sorting" << endl;
for (const auto &i : v)
cout << i << ' ' << endl;
cout << "Elements after sorting" << endl;
sort(v.begin(), v.end());
for (const auto &i : v)
cout << i << ' ' << endl;
return 0;
}
実行結果
Elements before sorting 10 9 8 6 7 2 5 1 Elements after sorting 1 2 5 6 7 8 9 10
降順で並べ替える場合
降順(大きい順)にソートしたい場合は、比較基準として greater<int>() を第3引数に指定します。その際は <functional> ヘッダーのインクルードが必要です。
#include <functional> sort(v.begin(), v.end(), greater<int>()); // 降順でソート
このように std::sort() を使えば、たった1行のコードでvectorの中身を簡単に並べ替えることができます。用途に応じて昇順・降順を使い分けるとよいでしょう。
-
C++の型推論とは?autoキーワードの基本と使い方をわかりやすく解説
型推論(Type Inference)とは、プログラミング言語において式のデータ型を自動的に判別する機能のことです。この機能は、強い静的型付けを持つ一部の言語に備わっています。 C++では、C++11で追加されたautoキーワードを使うことで、自動的な型推論が可能になります。これにより、開発者は複雑な型名を明示的に書く必要がなくなり、コードがシンプルで読みやすくなります。 autoキーワードの活用例 たとえば、vectorの要素を走査するイテレータを作成したい場合、従来は std::vector<int>::iterator という長い型名を記述する必要がありました。しかし、aut
-
C++で配列を並べ替える方法|選択ソートの仕組みと実装例を解説
C++では、さまざまなソート(並べ替え)アルゴリズムを使って配列を整列できます。ソート済みの配列とは、数値の大小順やアルファベット順など、何らかの基準に従って要素が並び替えられた配列のことです。代表的なソートアルゴリズムには、バブルソート、挿入ソート、選択ソート、マージソート、クイックソート、ヒープソートなどがあります。本記事では、その中でも構造がシンプルで理解しやすい「選択ソート」を取り上げ、実際のコード例とともに詳しく解説していきます。 選択ソートとは? 選択ソートは、未ソート部分の中から最小値を繰り返し探し出し、それを未ソート部分の先頭にある要素と交換することで、配列全体を昇順に整列さ