#include<iostream>#include<string>using std::string;int main(){using namespace std;int n;cin>>n;cin.get();int k=1;string s[n];int x;int y;int z;for(int i=0;i<n;i++){getline(cin,s[i]);}for(int i=0;i<n;i++){x=s[i].find("@");y=s[i].find(".");while((y!=string::npos)&&(y<x)) {s[i].erase(y,1);y=s[i].find(".",y+1);}z=s[i].find("+");if((z<x)&&(z!=string::npos)){s[i].erase(z,x-z);}if(i>0){for(int j=0;j<i;j++){if(s[i]==s[j]){k-=1;break;}}}k+=1;}cout<<k<<endl;return 0;} 這個(gè)為什么erase越界了?我就是想把一個(gè)字符串@前面的 . 刪除,再把@前面的+和@之間的部分刪除一共輸入n個(gè)字符串,然后經(jīng)過相同的處理,然后輸出處理后不同字符串的個(gè)數(shù)
1 回答

GCT1015
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
erase()函數(shù)的功能是用來刪除容器中的元素。
函數(shù)原型:
iterator erase(iterator where);
iterator erase(iterator first,iterator last);
basic_string& erase(size_type p0=0,size_type n=np);
刪除某個(gè)容器里的某個(gè)元素:c.erase(T);
鏈表容器以list為例,執(zhí)行container.erase(it)。
list<int>::iterator it;
for (it = lt.begin(); it != lt.end(); ) {
if (*it % 2 == 0)
lt.erase(it++);
else
++it;
}
- 1 回答
- 0 關(guān)注
- 173 瀏覽
添加回答
舉報(bào)
0/150
提交
取消