C++ で vector の内容を出力する方法

胡金庫 2023年10月12日
  1. 要素アクセス記法で for ループを使ってベクトルの内容を出力する
  2. ベクトルの内容を出力するために要素アクセス記法を用いた範囲ベースのループを使用する
  3. ベクトルの内容を出力するには std::copy を使用する
  4. ベクトルの内容を出力するには std::for_each を用いる
C++ で vector の内容を出力する方法

この記事では、C++ で vector の内容を出力する方法をいくつか紹介します。

要素アクセス記法で for ループを使ってベクトルの内容を出力する

vector の要素にアクセスするには、at() メソッドか [] 演算子を用いることができます。この解決策では、これらの両方を用いて cout ストリームを用いて内容を表示します。まず、ベクトル変数を任意の整数で初期化し、その要素を一つずつループさせてストリームを出力します。

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  for (size_t i = 0; i < int_vec.size(); ++i) {
    cout << int_vec.at(i) << "; ";
  }
  cout << endl;

  for (size_t i = 0; i < int_vec.size(); ++i) {
    cout << int_vec[i] << "; ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

出力:

1; 2; 3; 4; 5; 6; 7; 8; 9; 10;
1; 2; 3; 4; 5; 6; 7; 8; 9; 10;

ベクトルの内容を出力するために要素アクセス記法を用いた範囲ベースのループを使用する

前述の解決策は比較的簡単ですが、かなり冗長に見えます。現代の C++ では、反復を表現するためのより柔軟な方法が用意されており、その 1つが範囲ベースのループです。ループが比較的簡単な操作を実行し、並列化する必要がない場合には、より読みやすいと考えられています。

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  for (const auto &item : int_vec) {
    cout << item << "; ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

ベクトルの内容を出力するには std::copy を使用する

ベクトルの繰り返し処理と出力処理を 1つの文で行うかなり高度な方法として、<algorithm> ライブラリで定義されている copy 関数を呼び出す方法があります。このメソッドはイテレータで指定されたベクトル範囲を受け取り、第 3 引数として ostream_iterator を渡して範囲の内容を cout ストリームにリダイレクトします。

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::vector;

int main() {
  vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  copy(int_vec.begin(), int_vec.end(), ostream_iterator<int>(cout, "; "));
  cout << endl;

  return EXIT_SUCCESS;
}

ベクトルの内容を出力するには std::for_each を用いる

1つの文で繰り返し処理と出力処理を行うもう 1つの STL アルゴリズムが for_each です。このメソッドは、指定した範囲の各要素に特定の関数オブジェクトを適用することができるので、持っていると便利なツールです。この場合、lambda 式を渡すことで要素を出力ストリームに出力します。

#include <algorithm>
#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::for_each;
using std::vector;

int main() {
  vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  for_each(int_vec.begin(), int_vec.end(),
           [](const int& n) { cout << n << "; "; });
  cout << endl;

  return EXIT_SUCCESS;
}
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - C++ Vector