Erasing Elements from std::vector by Index
In C , std::vector is a container that efficiently stores elements in contiguous memory locations. To remove elements from a vector, the erase function is employed.
Problem: Given a std::vector, deleting the element at a specific index.
Example:
std::vector<int> vec; vec.push_back(6); vec.push_back(-17); vec.push_back(12); vec.erase(???); // How to delete the second element?
Solution:
To erase a single element by index, use std::next to increment the vector iterator by the desired index:
vec.erase(std::next(vec.begin(), elementIndex));
To erase a range of elements, specify the beginning and end iterators:
int startIndex = 1; int endIndex = 3; vec.erase(std::next(vec.begin(), startIndex), std::next(vec.begin(), endIndex));
In the provided example, the following code will delete the second element (vec[1]):
vec.erase(std::next(vec.begin()));
For deleting the second and third elements, use:
vec.erase(std::next(vec.begin(), 1), std::next(vec.begin(), 3));
The above is the detailed content of How to Erase Elements from a C std::vector by Index?. For more information, please follow other related articles on the PHP Chinese website!