C++ <array> front 関数

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


arrayのさまざまな操作の中で、frontは非常にシンプルな関数で、最初の要素を取得するために使用されます。。

frontはコンテナクラスのメンバ関数であり、コンテナの最初の要素を返します。。これは〜に相当します。at(0) 或 operator[](0)が、意味はより明確です。

frontコンテナの先頭要素への直感的なアクセス方法を提供します。

単語の意味: front「前」を意味し、最初の(最前面の)要素を取得します。


基本構文とパラメータ

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

構文形式

reference front();
const_reference front() const;

パラメータの説明

  • パラメータ: パラメータなし
    • frontパラメータを一切受け付けません。

関数の説明

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

実例

一連の例を通して、frontの使い方を完全にマスターしましょう。

例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. frontを使用して最初の要素を取得する
    std::cout << "最初の要素 (front): " << numbers.front() << std::endl;
    std::cout << "at(0)を使用: " << numbers.at(0) << std::endl;
    std::cout << " << numbers[0] << std::endl;

    return 0;
}

期待される実行結果:

array的大小是: 5
第一个元素 (front): 10
使用 at(0): 10
使用 [0]: 10

コードの解説:

  1. numbers.front()最初の要素を返します10。
  2. これはnumbers.at(0)とnumbers[0]と同じ値を返しますが、意味がより明確です。

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

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

実例

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

int main() {
    std::array<std::string, 3> names = {"Alice", "Bob", "Charlie"};

    std::cout << "変更前の最初の要素: " << names.front() << std::endl;

    // front()を使用して参照を取得し、要素を変更する
    names.front() = "Andrew";

    std::cout << "変更後の最初の要素: " << names.front() << std::endl;

    return 0;
}

期待される実行結果:

修改前,第一个元素: Alice
修改后,第一个元素: Andrew

コードの解説:

  • names.front() = "Andrew";参照を通じて最初の要素の値を変更しました。
  • front()変更可能な左辺値参照を返します。

例3: frontを使用してキューの先頭を実装する

frontキューのようなデータ構造の実装に使用できます。

実例

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

// シンプルな固定長キュー(arrayを使用して実装)
class FixedQueue {
private:
    std::array<std::string, 100> data;
    size_t frontIndex = 0;
    size_t backIndex = 0;
    size_t count = 0;

public:
    // エンキュー
    bool enqueue(const std::string& item) {
        if(count >= 100) return false;
        data[backIndex] = item;
        backIndex = (backIndex + 1) % 100;
        ++count;
        return true;
    }

    // 先頭要素を取得
    std::string front() const {
        return data[frontIndex];
    }

    // キューが空かどうかを判定
    bool empty() const {
        return count == 0;
    }

    // キューのサイズを取得
    size_t size() const {
        return count;
    }
};

int main() {
    FixedQueue q;

    q.enqueue("ユーザーA");
    q.enqueue("ユーザーB");
    q.enqueue("ユーザーC");

    std::cout << "キューのサイズ: " << q.size() << std::endl;

    while(!q.empty()) {
        std::cout << "処理: " << q.front() << std::endl;
    }

    return 0;
}

期待される実行結果:

队列大小: 3
处理: 用户A
处理: 用户B
处理: 用户C

コードの解説:

  • front()先頭要素(処理待ちの要素)を取得するために使用されます。
  • この例は、frontを使用して先入れ先出し(FIFO)キューを実装する方法を示しています。

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

その他の拡張