C++ <array> front 関数
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;
}
#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
コードの解説:
numbers.front()最初の要素を返します10。- これは
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;
}
#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;
}
#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>