C++ <array> back 関数

C++ コンテナクラス <array>


array のさまざまな操作において、backは非常に実用的な関数で、最後の要素を取得します。。

backはコンテナクラスのメンバ関数で、コンテナの最後の要素を返します。。これはat(size()-1) 或 operator[](size()-1)と同じですが、意味はより明確です。

backコンテナの末尾要素にアクセスする直感的な方法を提供します。

単語の意味: back「後ろ」を意味し、つまり最後の(一番後ろの)要素を取得します。


基本構文とパラメータ

backはコンテナクラスのメンバ関数で、呼び出しは非常に直接的で、パラメータは不要です。

構文形式

reference back();
const_reference back() const;

パラメータの説明

  • パラメータ: パラメータなし
    • backいかなるパラメータも受け取りません。

関数の説明

  • 戻り値: コンテナの最後の要素の参照。コンテナがconstコンテナの場合は、const参照を返します。
  • 効果: コンテナの最後の要素(インデックスsize()-1の位置の要素)を返します。
  • 注意: array は空にできないため、呼び出しはback安全です。

例

一連の例を通して、徹底的にbackback の使い方をマスターしましょう。

例 1:基本の使い方 - 最後の要素を取得する

例

#include <iostream>
#include <array>

int main() {
    // 1. array を作成して初期化する
    std::array<int, 5> numbers = {10, 20, 30, 40, 50};

    std::cout << "arrayのサイズは: " << numbers.size() << std::endl;

    // 2. back を使用して最後の要素を取得する
    std::cout << "最後の要素 (back): " << numbers.back() << std::endl;
    std::cout << "at(size()-1) を使用: " << numbers.at(numbers.size() - 1) << std::endl;
    std::cout << "[size()-1] を使用: " << numbers[numbers.size() - 1] << std::endl;

    return 0;
}

実行結果の予想:

array的大小是: 5
最后一个元素 (back): 50
使用 at(size()-1): 50
使用 [size()-1]: 50

コードの解説:

  1. numbers.back()最後の要素を返します。50。
  2. これはnumbers.at(numbers.size()-1)とnumbers[numbers.size()-1]と同じ値を返しますが、意味がより明確です。

例 2:最後の要素の値を変更する

backは参照を返すため、要素の値を変更するために使用できます。

例

#include <iostream>
#include <array>
#include <string>

int main() {
    std::array<std::string, 3> tasks = {"C++を学ぶ", "宿題をする", "ドキュメントを読む"};

    std::cout << "変更前の最後のタスク: " << tasks.back() << std::endl;

    // back() を使用して参照を取得し、要素を変更する
    tasks.back() = "プロジェクトを完了する";

    std::cout << "変更後の最後のタスク: " << tasks.back() << std::endl;

    return 0;
}

実行結果の予想:

変更前、最後のタスク: ドキュメントを読む  
変更後、最後のタスク: プロジェクトを完了する

コードの解説:

  • tasks.back() = "完成项目";参照を通じて最後の要素の値を変更しました。
  • back()は変更可能な左辺値参照を返します。

例 3:back を sort と組み合わせて最大値・最小値を取得する

ソート後、back()最大値を返します。

例

#include <iostream>
#include <array>
#include <algorithm>

int main() {
    std::array<int, 5> numbers = {30, 10, 50, 20, 40};

    std::cout << "ソート前: ";
    for(int n : numbers) std::cout << n << " ";
    std::cout << std::endl;

    // ソート
    std::sort(numbers.begin(), numbers.end());

    std::cout << "ソート後: ";
    for(int n : numbers) std::cout << n << " ";
    std::cout << std::endl;

    std::cout << "最小値 (front): " << numbers.front() << std::endl;
    std::cout << "最大値 (back): " << numbers.back() << std::endl;

    return 0;
}

実行結果の予想:

排序前: 30 10 50 20 40
排序后: 10 20 30 40 50
最小值 (front): 10
最大值 (back): 50

コードの解説:

  • ソート後、front()最小値を返し、back()最大値を返します。
  • これは最大値/最小値を簡単に取得する方法です。

C++ コンテナクラス <array>

その他の拡張