string、、vector、queue、list、map、stack

本文介绍了C++中字符串(string)的基本操作,包括计算长度、与char类型互转、拼接、查找字符或字符串、替换和删除。同时,也详细讲解了vector的创建、元素初始化、访问以及插入和删除等操作,强调了迭代器在访问元素中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

string

快速回忆:

求长度

int len=s1.size()   //“asd”长度为3

和char类型互转:

string s1;
char a[10]="123"
s1=a;
printf("%c",s1.c_str()[1]);
printf("%s",s1.c_str());

拼接

s1+=s2
s1.append(s2,2); //前两个字符
s2.append(s2,2,3); //2-3个字符 

 查找其中字符或者字符串

找不到返回-1

int temp=s1.find('a',1);  //表示从1也就是第二个字符开始找,不加默认从头开始找,返回角标给temp。
s1.rfind('a',1);  //从又右开始找
s1.find(s2);  //查找字符串
s1.find(s2[1]);  //查找s2中的第二个字符

替换string中的字符

s3=s1.replace(0,2,s2);   //将s1中的前两个字符换成s2,然后赋给s3,这里的0,2理解为[0,2)

删除其中字符

s2=s1.erase(2);  //将角标2及其后面的字符删除
s2=s1.erase(2,3)  //2为起始角标,3为长度。

vector

创建使用

(1)

vector<类型> xxx; 

 注:对象创建之后是没有内存空间的(并没有初始化),要么直接xxx.push_back()往里面存东西,要么使用下面的语句进行分配空间,才可以对其进行存储

xxx.reserve(2);   //至少容纳2个元素

或者创建的时候同时赋值:

vector<int> primes {2, 3, 5, 7, 11, 13, 17, 19};

(2)

vector<double> values(20);  //values 容器开始时就有 20 个元素,它们的默认初始值都为 0
vector<double> values(20,1.0);   ////values 容器开始时就有 20 个元素,它们的默认初始值都为 1

(3)

int a[]={1,2,3,4};
vector<int> v(a,a+3);  //加3但是不包含3

此时v中的元素为1 2 3

元素访问

使用迭代器:(迭代器储存的是迭代的元素对应的地址)

vector<int>::iterator it=v.begin();
for(;it!=v.end();it++){
    printf("%d\n",*it);   //*取出地址中的元素
}

这里我们将int类型的vector的迭代器进行输出:

可以看到地址之间相隔4,因为是int类型 (4个字节,1个字节8bit,int为2^31,还有一位作为符号需要32bit,也就是4字节)

注:但是迭代的时候是it++而不是it+=4

或者可以类似于数组一样访问:(因为[]被重载了)

for(int i=0;i<=3;i++){
    printf("%d\n",v[i]);
}

其他常用

v.empty()空返回1,非空返回0
v.begin()返回第一个元素的迭代器
v.end()

返回指向容器最后一个元素所在位置后一个位置的迭代器,通常和 begin() 结合使用。

v.size()          返回实际的元素个数
operator[ ]重载了 [ ] 运算符,可以向访问数组中元素那样,通过下标即可访问甚至修改 vector 容器中的元素。使用这个更方便
push_back()在序列的尾部添加一个元素。
pop_back()移出序列尾部的元素。
clear()移出所有的元素,容器大小变为 0。
v.insert()

指定位置插入

v.insert(iterator, 4, 'C' ); 

更多参考:

C++ STL vector容器详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值