String容器
注意,String是一个类
String构造函数
string(); --->无参构造
string(const char* s); --->使用字符串s进行初始化
string(const string& s) --->使用另一个string对象进行初始化
例如
void test1()
{
const char* s1 = "Hellow World";
string str1;
string str2(s1);
string str3(str2);
}
String的赋值操作
方式一利用“=”进行赋值
如
const char* s1 = "Hellow World";
string str = s1;
string str2 = s1;
str2 = 'H';
方式二利用assign进行赋值
如
const char* s1 = "Hellow World";
string str1;
str1.assign(s1);
string str2;
str2.assign(str1);
str1.assign(s1, 5); //把字符串s1的前n项赋值给str1
string字符串拼接
方式一,利用“+=”进行拼接
const char* s1 = "World";
string str1 = "Hellow";
string str2 = s1;
str1 += s1;
str1 += str2;在这里插入代码片
方式二利用append进行拼接
str1.append(s1);
str1.append(str2);
str1.append(s1, 5); //把字符串前n项拼接给str1
str1.append(str2, 2, 5);//把str2的第2个到第5个字符拼接给str1
string的查找与替换(以常用的为例)
查找
string str = "Hellow World";
int if_find = str.find("He");
if_find = str.find("He", 5);//从第五个开始查找
替换
str.replace(1, 4, "wsdfa");//将下标为一到四的字符换成const string& str1 或 const char* s1
string的比较
string s1 = "Hellow";
string s2 = "World";
int if_equal = s1.compare(s2);//如果相等,则返回的值为0
string的插入和删除
string s1 = "Hellow";
s1.insert(5, " World");//在下标为5的位置开始插入world
cout << s1 << endl;
s1.erase(5, 6);//删除从5开始的六个字符
cout << s1 << endl;
Vector容器
vector容器简介
vector数据结构与数组非常类似,不同在于vector可以动态扩展(malloc,realloc???)
vector构造函数
vector<int> v1;//无参默认构造函数
vector<int> v2(v1.begin(), v1.end());//将v1的begin到end拷贝到v2
vector<int> v3(v2);//拷贝构造函数
vector插入和删除
如
vector<int> v1;
v1.push_back(1);//实现的是尾插法
v1.push_back(2);
v1.push_back(2);
v1.push_back(2);
v1.push_back(2);
v1.pop_back();//删除最后一项
v1.erase(v1.begin());//注意参数是迭代器
//若想删除指定某一项可以
int index = 3;//想删除的索引
v1.erase(v1.begin() + index);
v1.erase(v1.begin(), v1.end());//删除begin到end的元素
v1.clear();//删除所有元素
vector赋值操作
vector<int> v1;
v1.push_back(1);
v1.push_back(1);
v1.push_back(1);
v1.push_back(1);
v1.push_back(1);
v1.push_back(1);
vector<int> v2;
v2 = v1;
v2.assign(v1.begin(), v1.end());
vector的容量和大小
vector容器提供很多函数例如empty()-判断是否为空,capacity()-容器的容量,size()-容器元素的个数,resize-重新指定容器的大小(和realloc不同,不能重新指定容器的容量),与数据结构差不多,暂不多讲
vector容器互换
将v1容器和v2容器互换
vector<int> v1;
v1.push_back(1);
v1.push_back(1);
v1.push_back(1);
vector<int> v2;
v2.push_back(1);
v2.push_back(2);
v2.push_back(3);
v1.swap(v2);
for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++)
{
cout << *it << endl;
}
但swap还有一个重要作用,可以缩小空间,例如我将v1.resize(3),但实际空间并没有缩小,我们可以巧用swap缩小空间
vector<int>(v).swap(v)
vector预留空间
有点像malloc
括号后面为想要的空间
vector<int> v;
v.reserve(1000);