C++ で配列を出力する方法
胡金庫
2023年10月12日
この記事では、C++ で配列の要素をコンソールに出力する方法を紹介します。
範囲ベースのループを使用して配列を出力する
このメソッドは、モダンな C++11 の範囲ベースのスタイルを採用した典型的な for
ループです。範囲ベースの繰り返し処理では、const 参照 (auto const& i
)、値 (auto i
)、転送参照 (auto&& i
) などのカスタム指定子を使用して要素にアクセスするオプションが用意されています。このメソッドの利点は、従来の for
ループよりも使いやすさと可読性にあります。
#include <iostream>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (auto const& value : arr) cout << value << "; ";
cout << endl;
return EXIT_SUCCESS;
}
出力:
1; 2; 3; 4; 5; 6; 7; 8; 9; 10;
関数 copy
を使って配列を出力する
関数 copy()
は STL <algorithm>
ライブラリに実装されており、範囲ベースの演算のための強力なツールです。copy
は範囲の開始点と終点のイテレータを最初の 2つのパラメータとして受け取ります。この場合、array
の要素をコンソールに出力するために、第 3 引数として出力ストリームのイテレータを渡します。
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
copy(arr.begin(), arr.end(), std::ostream_iterator<int>(cout, "; "));
cout << endl;
return EXIT_SUCCESS;
}
出力:
1; 2; 3; 4; 5; 6; 7; 8; 9; 10;
別の方法として、上記の例を簡単に再実装して、配列の要素を逆順に出力することができます。関数 copy()
の最初の 2つの引数を修正し、rbegin
/rend
関数呼び出しで代用します。
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
copy(arr.rbegin(), arr.rend(), std::ostream_iterator<int>(cout, "; "));
cout << endl;
return EXIT_SUCCESS;
}
出力:
10; 9; 8; 7; 6; 5; 4; 3; 2; 1;
for_each
アルゴリズムを用いて配列を出力する
for_each
は STL ライブラリのもう一つの強力なアルゴリズムです。これは、与えられた関数オブジェクトを範囲の各要素に適用することができます。この例では、lambda
式を custom_func
変数として定義し、それを for_each
メソッドに渡して与えられた配列の要素を操作します。
#include <iostream>
#include <iterator>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto custom_func = [](auto &i) { cout << i << "; "; };
for_each(arr.begin(), arr.end(), custom_func);
cout << endl;
return EXIT_SUCCESS;
}
出力:
1; 2; 3; 4; 5; 6; 7; 8; 9; 10;
著者: 胡金庫