C++ <list> pop_back 関数
pop_backは list 内でリンクリストの末尾の要素を削除するための関数です。
pop_backコンテナクラスのメンバ関数であり、リンクリストの最後の要素を削除するために使用されます。
list において、pop_backの時間計算量は O(1) で、非常に効率的です。
単語の意味: popは「ポップ(取り出す)」ことで、backは「後ろ」で、合わせると後ろの要素を取り出すという意味になります。
基本構文とパラメータ
pop_backコンテナクラスのメンバ関数であり、呼び出しにパラメータは必要ありません。
構文形式
void pop_back();
パラメータの説明
- パラメータ: パラメータなし
関数の説明
- 戻り値:
void(戻り値なし)。 - 効果: コンテナの
size()サイズは 1 減少します。最後の要素が削除されます。 - 注意: リンクリストが空の場合、呼び出すことは
pop_back未定義の動作になります。
例
例1:基本用法 - 末尾の要素を削除
例
#include <iostream>
#include <list>
int main() {
std::list<int> numbers = {10, 20, 30, 40, 50};
std::cout << "元の list: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// 末尾の要素を削除
numbers.pop_back();
std::cout << "pop_back() 後: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
numbers.pop_back();
std::cout << "さらに pop_back() 後: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> numbers = {10, 20, 30, 40, 50};
std::cout << "元の list: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// 末尾の要素を削除
numbers.pop_back();
std::cout << "pop_back() 後: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
numbers.pop_back();
std::cout << "さらに pop_back() 後: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
実行結果の予想:
原始 list: 10 20 30 40 50 pop_back() 后: 10 20 30 40 再 pop_back() 后: 10 20 30
例2:pop_back の安全な使用
使用前にリンクリストが空かどうかを確認します。
例
#include <iostream>
#include <list>
void safePopBack(std::list<int>& lst) {
if(!lst.empty()) {
lst.pop_back();
std::cout << "削除成功" << std::endl;
} else {
std::cout << "リンクリストが空のため、削除できません" << std::endl;
}
}
int main() {
std::list<int> data = {1, 2, 3};
safePopBack(data);
safePopBack(data);
safePopBack(data);
safePopBack(data); // この時点では空
return 0;
}
#include <list>
void safePopBack(std::list<int>& lst) {
if(!lst.empty()) {
lst.pop_back();
std::cout << "削除成功" << std::endl;
} else {
std::cout << "リンクリストが空のため、削除できません" << std::endl;
}
}
int main() {
std::list<int> data = {1, 2, 3};
safePopBack(data);
safePopBack(data);
safePopBack(data);
safePopBack(data); // この時点では空
return 0;
}
実行結果の予想:
削除成功 削除成功 削除成功 連結リストが空のため、削除できません
その他の拡張