C++ <array> back 関数
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;
}
#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
コードの解説:
numbers.back()最後の要素を返します。50。- これは
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;
}
#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;
}
#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()最大値を返します。 - これは最大値/最小値を簡単に取得する方法です。
その他の拡張