プログラミング

C++超入門⑥ 配列・vector・stringを使おう

配列、std::vector、std::stringを使い、複数の数字や文字をまとめて扱う方法を学びます。

第6回では、複数の値をまとめて扱う方法を学びます。

5人分の点数を保存するとき、変数を5個作るより、配列やvectorへまとめる方が扱いやすくなります。

この回でできるようになること

  • 配列へ複数の値を保存する
  • 添字を使って一つの値を取り出す
  • vectorへ後から値を追加する
  • stringの文字数や一つの文字を調べる

配列の基本

同じ型の値を、決まった個数だけ並べたものを配列と呼びます。

int scores[3] = {80, 95, 70};

scoresには3個の整数が入っています。

一つの値を取り出すときは、位置を表す添字を使います。

std::cout << scores[0] << '\n';
std::cout << scores[1] << '\n';

最初の位置は0です。scores[0]が80、scores[1]が95になります。

配列を繰り返しで読む

for文と組み合わせると、すべての値を順番に読めます。

int scores[3] = {80, 95, 70};

for (int i = 0; i < 3; i++) {
    std::cout << scores[i] << '\n';
}

iは0、1、2と変化します。存在しないscores[3]を読もうとすると、正しくない動作の原因になります。

配列の範囲からはみ出さないことが大切です。

vectorは大きさを変えられる

std::vectorは、後から値を増やしたり減らしたりできる入れ物です。

使うときは**#include <vector>**を読み込みます。

#include <iostream>
#include <vector>

int main() {
    std::vector<int> scores = {80, 95};
    scores.push_back(70);

    for (int score : scores) {
        std::cout << score << '\n';
    }

    return 0;
}

push_backは、vectorの最後へ値を追加します。

for (int score : scores)は、scoresの値を一つずつscoreへ入れて繰り返す書き方です。これを範囲for文と呼びます。

配列とvectorの違い

比較 配列 vector
大きさ 最初に決める 後から変えられる
値の追加 基本的にできない push_backで追加できる
初心者の使いやすさ 仕組みが単純 実用的で安全に扱いやすい

個数が変わる可能性があるなら、vectorが便利です。

stringで文字を扱う

std::stringは文字列を扱う型です。

#include <iostream>
#include <string>

int main() {
    std::string word = "code";

    std::cout << word.length() << '\n';
    std::cout << word[0] << '\n';
    return 0;
}

length()は文字数を返します。word[0]では、最初の1文字を取り出します。

stringも位置を0から数えます。

小さな練習

vectorへ80、65、90、75を入れ、for文で合計を求めてください。

合計を人数で割ると平均を計算できます。小数の平均が必要な場合は、double型へ変換してから割ります。

模範解答

#include <iostream>
#include <vector>

int main() {
    std::vector<int> scores = {80, 65, 90, 75};
    int total = 0;

    for (int score : scores) {
        total += score;
    }

    double average = static_cast<double>(total) / scores.size();
    std::cout << "合計: " << total << '\n';
    std::cout << "平均: " << average << '\n';
    return 0;
}

解説

範囲for文でvectorの値を1つずつscoreへ取り出しています。整数同士の割り算にならないよう、static_castでtotalを一時的にdouble型へ変換してから人数で割ります。

まとめ

  • 配列は、同じ型の値を決まった個数だけ並べます。
  • 添字は0から始まります。
  • 個数が変わるデータにはvectorが便利です。

前の記事:C++超入門⑤ 関数で処理を分けよう

次の記事:C++超入門⑦ ポインタと参照を理解しよう

← 記事一覧へ戻る