1.string重载了[ ] 、> 、<、==操作符。
stl中的string是用数组存储的,所以其重载了操作符[ ],可以直接索引
字符串的常用操作中就有字符串比较。所以其重载了 >、< 、== 操作符。而在c语言中是借助strcmp来完成的
2.=是可以给字符串赋值的。因为stl中的string是对象,内容是可以修改的。
string a="abc";//初始化
a="fefef";//对a重新赋值。
3.vector<int> a ;
a[5]=3;//这句是错的,虽然vector重载了[ ],但是当使用其进行赋值时,要保证下标不超过其size,这里新建的a的size=capacity=0;错误的理由很简单,其错误类似于数组下标越界。vector中是检查数组越界的!。
4. string中的字符串结尾时没有\0的!!所以判断其是否结束不能用while( str[i] ) ,可以用长度来判断while(i < str.length())。
5.删除vector中相同的元素,包含其本身
1 2 3 3 4 5
remove(beg,end,1)就是
2 3 3 4 5 5
remove(beg,end,3)就是
1 2 4 5 4 5
remove(beg,end,5)还是
1 2 3 3 4 5
1、remove并不是删除,仅仅是移除,要加上erase才能完成删除。
2、remove并不是删除指定位置的元素,而移除所有指定的元素。
3、用algorithm代替成员函数不是一个好的选择。
remove只是简单地用"未删除"对象来填补被删除对象留下的缺口,每一个删除对象在尾部还是会留下一个相应的"死亡"对象.
可以这样来使用remove...
vector<int>vec;
vec.erase(remove(vec.begin(),vec.end(),value),vec.end()); //value是要删除的值