vector::erase
Vectors are sequence container and work like dynamic arrays. Vectors stores elements in contiguous memory locations i.e in a linear sequence. vector::erase() is an inbuilt function in c++ used for removing the specific element from vector or removing the range of elements.
向量是序列容器,就像动态数组一样工作。 向量将元素存储在连续的存储位置中,即以线性顺序存储。 vector :: erase()是c ++中的内置函数,用于从vector中删除特定元素或删除元素范围。
Syntax:
句法:
VectorName.erase (pos);
VectorName.erase(StartPos, EndPos);
Here, VectorName is the name of vector used at the time of declaration.
在此 , VectorName是声明时使用的向量的名称。
Parameters:
参数:
Pos: It is the position of an element of the vector you want to delete denoted by the iterator.
位置 :这是要删除的向量元素的位置,由迭代器表示。
StartPos: It is the iterator specifying a start of the range to be removed.
StartPos :它是迭代器,指定要删除的范围的开始。
EndPos: It is the iterator pointing to one position ahead of the last element to be removed from the range.
EndPos :它是迭代器指向要从范围中删除的最后一个元素之前的一个位置。
Note: erase(StartPos, EndPos) specifies the range which includes all the elements between StartPosand EndPos, including the element pointed by StartPosbut not include the one pointed by EndPosi. e [StartPos, EndPos).
注意: 擦除(StartPos,EndPos)指定包括所有StartPosand EndPos之间的元素,包括由StartPosbut指出不包括一个指出由EndPosi的元件的范围内。 e [StartPos,EndPos) 。
Example 1: This example shows the basic working of vector::erase() function.
示例1:此示例显示vector :: erase()函数的基本工作。
#include<iostream>
#include<vector>
using namespace std;
int main ()
{
std::vector<int> MyVector;
// insert into vector
for (int i=1; i<=8; i++) MyVector.push_back(i);
cout << " After elements insertion : ";
for (unsigned i=0; i< MyVector.size(); ++i)
cout << ' ' << MyVector [i];
cout<<endl;
// erase the 3rd element
MyVector.erase (MyVector.begin()+3);
cout << " After removing 3rd element: ";
for (unsigned i=0; i< MyVector.size(); ++i)
cout << ' ' << MyVector [i];
cout<<endl;
// erase the first 3 elements:
MyVector.erase (MyVector.begin(),MyVector.begin()+3);
cout << " After removing first three elements: ";
for (unsigned i=0; i< MyVector.size(); ++i)
cout << ' ' << MyVector [i];
return 0;
}
Output
输出量
After elements insertion : 1 2 3 4 5 6 7 8
After removing 3rd element: 1 2 3 5 6 7 8
After removing first three elements: 5 6 7 8
Example 2: Erase all even numbers in a vector.
示例2:擦除向量中的所有偶数。
#include <iostream>
#include <vector>
using namespace std;
int main( )
{
vector<int> c;
// inserting in vector
for (int i=1; i<=10; i++) c.push_back(i);
cout<<"Elements in Vector : ";
for (int i=0; i<=9; i++) {
cout << c[i] << " ";
}
cout <<endl;
// Erase all even numbers
for (vector<int>::iterator it = c.begin(); it != c.end(); ) {
// if number is even remove it
if (*it % 2 == 0) {
it = c.erase(it);
} else {
// if number if not even check for next element
++it;
}
}
cout<<"After removing all even numbers : ";
for (vector<int>::iterator it = c.begin(); it != c.end(); it++ ) {
cout << *it << " ";
}
return 0;
}
Output
输出量
Elements in Vector : 1 2 3 4 5 6 7 8 9 10
After removing all even numbers : 1 3 5 7 9
翻译自: https://www.includehelp.com/stl/erase-elements-in-cpp-vector-using-vector-erase.aspx
vector::erase