string 删除
erase(起点下标,删除字符个数) 按起点 删除指定个数
erase(起点下标) 按起点,删除所有字符
vector 删除
erase(迭代器起点,迭代器终点) 删除起点直到终点,不含终点
erase(迭代器起点,迭代器起点+i) 按起点 删除指定i个数 eg. nums.erase(it+1,it+3); it+1起 删除2个
erase(迭代器起点) 按起点,删除一个
string 查找 删除
#include <iostream>
#include <string>
using namespace std;
int main (){
string s="asasasdfgasdfgaserdafgataas";
string t="as";
string::size_type n=0;
string m;
//查找到位置
if((n=s.find(t,n))!=string::npos){
//只找第一个
}
if((n=s.find_first_of(t,n))!=string::npos){
//只找第一个 找字符串t任意一个字符
}
//查找到所有位置并删除
while((n=s.find(t,n))!=string::npos){
m=m+s[n]+s[n+1];
s.erase(n,2);
//n++; 不能+1 因为删除后 后面会补上 若只是找位置 n++
}
return 0;
}
vector 向量类 查找 删除
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main (){
vector<int> nums;
for(int i=0;i<20;i++)
nums.push_back(i);
for(int i=0;i<20;i++){
if(i%3==0)
nums[i]=3;
}
int n=0;
vector<int>::iterator it;
//查找第一个
if((it=find(nums.begin(),nums.end(),3))!=nums.end()){ //查找到位置并删除
}
//按值删除
while(n<20){
if(nums[n]==3){
nums.erase(nums.begin()+n);//删除时不 n++
}
else{
n++;
}
}
//按find函数 迭代删除
it=nums.begin();//初始位置指向begin()
int nn=0;
//查找到所有位置并删除
while((it=find(it,nums.end(),3))!=nums.end()){ //查找到位置并删除
cout<<*it<<" "; //*it 输出值
nums.erase(it);
//it++; 不能+1 因为删除后 后面会补上
}
return 0;
}