c.erase(); ( c 为容器 )

//

01 string& erase( size_t pos=0,size_t n=s.size()-pos );

    01 return string& 类型 // 即 return 执行对应删除操作后 s 的引用 
    02 从下标 pos 开始,删除 n 个元素
    03 参数 n 缺省时,删除 从下标 pos 开始的所有元素
    04 两个参数都缺省时( 或 pos==0 ) 清空元素

02 iterator erase( iterator it );

    01 return 指向 被删元素 下一个位置的 迭代器
    02 删除迭代器 it 指向的元素

03 iterator erase( iterator first,iterstor last );

    01 return 指向 被删元素 下一个位置的 迭代器
    02 删除迭代器 [ first,last ) 区间内的所有元素

// eg
#include<bits/stdc++.h>
using namespace std;

int main()
{
    string s="";
    string s1="abcdefg";
    string s2="abcdefg";
    string s3="abcdefg";
    string s4="abcdefg";
    string s5="abcdefg";
    vector<int> v1={ 1,2,3,4 };      // {} not () 
    vector<int> v2={ 5,6,7,8 };
 
    s1.erase(0);    cout<<"s1 "<<s1<<endl;     printf("%d\n",s1==s );      // 输出: 1
    s2.erase();     cout<<"s2 "<<s2<<endl;     printf("%d\n",s2==s );

    s3.erase( s3.begin()+2 );               cout<<"s3 "<<s3<<endl;
    s4.erase( s4.begin()+2,s4.end()-2 );    cout<<"s4 "<<s4<<endl;

    s5.erase( 2,2 ); cout<<"s5 "<<s5<<endl;
    
    v1.erase( v1.begin()+1 ); for( auto i:v1 ) printf("%d ",i); printf("\n");
    // v2.erase( 2,2 );          for( auto i:v2 ) printf("%d ",i); printf("\n"); // error        
    
    return 0;
}
// s1
// 1
// s2
// 1
// s3 abdefg
// s4 abfg
// s5 abefg
// 1 3 4

猜你喜欢

转载自blog.csdn.net/qq_63173957/article/details/123306736