STL容器初学(String,Vector)

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;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值