stl

本文详细介绍了 C++ STL 中 vector、set 和 string 容器的基本操作与使用技巧,包括定义、访问、常用方法等,并提供了丰富的示例代码。

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

一.vector:用于元素个数不确定时或者邻接表

1.定义

vector <vector<int > > name;//中间的>>要加上空格
vector <int> vi;

2.访问

a.直接访问

vi[index]

b.通过迭代器访问

vector<typename>::iterator it=vi.begin();
for(int i=0;i<n;i++){
	printf("%d",*(it+i));
}

可见vi[i]与*(vi.begin()+i)相同

for(vector<int>::iterator it=vi.begin();it!=vi.end();i++){
	printf("%d",*it);
}
注意这里是
it!=vi.end()
3.常用

push_back()插入

pop_back()删除尾元素

size()返回vector中的元素个数

clear()清空vector中所有元素

insert(it,x)向任意迭代器插入元素x

erase(it)删除迭代器it处的元素

erase(first,last)删除左闭右开[first,last)处的元素

erase(vi.begin()+1,vi.begin()+4);

二.set:使内部元素有序,且不重复

1.定义

set <double> st;
set <node> st;//node是结构体

2.访问:set只能通过迭代器访问

for(set<int>::iterator it=st.begin();it!=st.end();it++){
	printf("%d "*it);
}

3.常用

insert(x)将x插入到容器set中

find(value)返回set中对应值为value的迭代器

set<int>::iterator it=st.find(x)

erase(it)删除迭代器it处的元素

//一般与find联合使用
st.erase(st.find(x))

erase(x)删除值为x的元素

erase(first,last)删除迭代器first到迭代器last区间的元素,仍然是左闭右开[first,last)

size()获得set中的元素个数

clear()清空set

三.string:需要#include<string>(不加.h)和using namespace std;

1.定义

string str="abc";

2.访问与输入输出

a.直接访问

与访问字符数组相同

str[i]
读入读出只能用cin和cout,若用printf,需要c_str()转化为字符数组输出

cin,cout在iostream的头文件中

cin>>str;
cout<<str<<endl;
printf("%s\n",str.c_str());

b.通过迭代器访问,不需要参数

for (string::iterator it=str.begin();it!=str.end();it++){
		printf("%c",*it);
}
与vector相同,支持迭代器加减某个数字,如str.begin()+3

3.常用

operator == , != , < , > , <= , >= ,+=

string str1="abc",str2="xyz",str3;
str3=str1+str2;
str1+=str2;
if(str1>=str2){
     ....
}
length(),size()返回string的长度

insert(pos,string)在pos位置处插入string

insert(it,it2,it3)it为原字符串与插入的位置,it2和it3为待插字符串的收尾迭代器

用来表示串[it2,it3)将被插入到it的位置上

string str1="abc",str2="xyz";
str1.insert(str1.begin()+3,str2.begin(),str2.end());
erase(it)删除迭代器it位置的元素

erase(first,last)删除[first,last)区间的元素,他们都是迭代器

str.erase(str.begin()+1,str.end()-3)
erase(pos,lenth)pos为开始删除的起始位置,lenth为删除的字符个数

clear()清空string中的数据




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值