adding erase example
This commit is contained in:
committed by
JamesFlare1212
parent
4054554203
commit
b34f9cd0af
@@ -415,6 +415,34 @@ p = s.erase(p);
|
||||
Even though the erase function has the same syntax for vectors and for list, the vector version is O(n), whereas
|
||||
the list version is O(1). Play this [animation](https://jidongxiao.github.io/CSCI1200-DataStructures/animations/lists/iterator/index.html) to see why.
|
||||
|
||||
Here is an [example program](list_erase.cpp) demonstrating the usage of safely erasing elements from an std::list while iterating over it.
|
||||
|
||||
```cpp
|
||||
#include <iostream>
|
||||
#include <list>
|
||||
|
||||
int main() {
|
||||
std::list<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
||||
|
||||
// iterate over the list and remove even numbers
|
||||
for (std::list<int>::iterator it = numbers.begin(); it != numbers.end(); ) {
|
||||
if (*it % 2 == 0) { // if the element is even
|
||||
it = numbers.erase(it); // erase returns the next valid iterator
|
||||
} else {
|
||||
++it; // move to the next element
|
||||
}
|
||||
}
|
||||
|
||||
// print the modified list
|
||||
// range based for loop: all STL containers that provide begin() and end() member functions support range-based for loops (introduced in C++11).
|
||||
for (int num : numbers) {
|
||||
std::cout << num << " ";
|
||||
}
|
||||
std::cout << std::endl;
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
## 9.10 Insert
|
||||
|
||||
- Similarly, there is an insert function for STL lists that takes an iterator and a value and adds a link in the
|
||||
|
||||
Reference in New Issue
Block a user