C++基础(二)
string与vector
string
string str;
string str="abcd";
string str(5,'a');
- string定义的对象可以和int,char等等定义的对象一样使用cin输入,cout输出。
- string定义的对象还能执行判断是否为空,返回长度等操作
string s;
if(s.empty()){
}
return s.size();
- 字符串比较的规则没有什么改变,就是比较第一对不同字符的大小。如果短字符串所有字符与长字符串没有区别就比较长度。如果长度也相同,那么就说两个字符串相等
- string定义的对象可以类似数组使用下标访问:如s[0]就表示字符串中第一个字符。
for(int i=0;i<s.size();i++){
s[i]++;
}
string s="have fun";
string s1="GOOD";
string newstr=s.substr(0,2);
swap(s1,s2);
s.insert(0,"We");
s.replace(1,3,"LLS");
s.find("bbc");
vector(向量)
- vector是STL标准库中的一个容器,想使用vector也要包含vector头文件。
- vector的定义
vector<int> vec;
vector<int> vecinit(5,1);
vector<int> vecinit{1,1,1,1,1};
vector<vector<int> > vecdd;
vector<int> vec;
vec.push_back(1);
vec.pop_back();
vector<int> vecinit(5,1);
cout<<vecinit[3];
vec.clear();
vec.front()
vec.back()
vec.erase(vec.begin(),vec.begin()+2);
vec.insert(vec.begin()+1,1);
vec.resize(10,1);
vec.reserve(10);
- vector插入后扩容的方式
- 如果向量容量足够,直接在要插入的地方插入。
- 如果容量不够:
- 先申请两倍的内存,如果不够,再申请足够的内存
- 将原数组中元素移到新空间中(这里只考虑了在尾部插入,如果在中间插入要分步移动)
- 依次插入元素
- 释放原来的空间