C++ <list> erase 関数
eraseは list において指定位置の要素を削除するために使用される関数です。
eraseコンテナクラスのメンバ関数であり、リンクリスト内の指定位置にある1つ以上の要素を削除するために使用されます。
list では、eraseの時間計算量はO(1)です。ポインタを調整するだけで済むためです。
単語の意味: erase「消去」を意味し、指定位置の要素を削除することです。
基本構文とパラメータ
eraseコンテナクラスのメンバ関数です。
構文形式
iterator erase(iterator pos); iterator erase(iterator first, iterator last);
パラメータの説明
- パラメータ:
pos- 削除する要素の位置 - パラメータ:
first, last- 削除する要素の範囲
関数の説明
- 戻り値: 次の要素を指すイテレータを返します。
- 効果: 指定位置の要素を削除します。
例
例 1:単一要素の削除
例
#include <iostream>
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5};
std::cout << "原始: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// 2番目の要素を削除
auto it = std::next(numbers.begin(), 1);
numbers.erase(it);
std::cout << "删除后: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5};
std::cout << "原始: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// 2番目の要素を削除
auto it = std::next(numbers.begin(), 1);
numbers.erase(it);
std::cout << "删除后: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
期待される実行結果:
原始: 1 2 3 4 5 削除後: 1 3 4 5
例 2:複数要素の削除
例
#include <iostream>
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5, 6, 7};
std::cout << "原始: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// 2番目から4番目の要素を削除
auto first = std::next(numbers.begin(), 1);
auto last = std::next(numbers.begin(), 4);
numbers.erase(first, last);
std::cout << "删除后: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
#include <list>
int main() {
std::list<int> numbers = {1, 2, 3, 4, 5, 6, 7};
std::cout << "原始: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// 2番目から4番目の要素を削除
auto first = std::next(numbers.begin(), 1);
auto last = std::next(numbers.begin(), 4);
numbers.erase(first, last);
std::cout << "删除后: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
期待される実行結果:
原始: 1 2 3 4 5 6 7 削除後: 1 5 6 7
その他の拡張
C++ コンテナクラス <list>