欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > STL有关操作

STL有关操作

2025/5/7 1:11:40 来源:https://blog.csdn.net/weixin_70911613/article/details/142991688  浏览:    关键词:STL有关操作

@STL常用内容总结

vector(动态数组)

有关vector的相关操作:
1.头文件:#include
2.初始化:
vector<容器类型>v; 如:vector;
指定范围:vectorv(n) 相当于定义一个储存n个(int类型)元素的数组;
vectorv(n,1) 相当于定义一个储存了n个“元素1”的数组;
直接赋值: vectorv{0,1,2,3,4};
有关vector的详细操作参考有关vector代码仓库地址

queue(队列)

特点:先进先出
queue<类型>q;

q.push(N); 在队尾插入元素N;
q.pop(); 删除队列第一个元素;
q.front(); 返回队列第一个元素
q,back(); 返回队列最后一个元素;
q.size(); 返回队列元素个数;
q.empty(); 判断队列是否为空;

大顶堆:(又称优先队列)
priority_queue a; //默认大顶堆,内部从大到小排序
小顶堆:
priority_queue<int,vector,greater > c; //小顶堆,从小到大
(与优先队列操作与queue相同,但没有clear())

deque(双端队列)

特点首位都可以插入删除
deque<类型>de;

push_back(x)/push_front(x)把x插入队尾后 / 队首
back()/front()返回队尾 / 队首元素
pop_back() / pop_front()删除队尾 / 队首元素
erase(iterator it)删除双端队列中的某一个元素
erase(iterator first,iterator last)删除双端队列中[first,last)中的元素
empty()判断deque是否空
size()返回deque的元素数量
clear()清空deque

deque容器可以排序
sort(q.begin(), q.end())//从小到大

//deque里面的类型需要是int型
sort(q.begin(), q.end(), greater());//从大到小排序

sort(q.begin(), q.end(), greater());//从大到小(高版本C++适用)

stack(栈)

特点:后进先出
stack<类型>s;

s.push(n)n从栈顶入栈
s.pop()移除栈顶元素
s.top()返回栈顶元素
s.empty()判断栈是否为空
s.size()返回栈元素个数

注意:栈中元素不能直接遍历
遍历必须逐个取出栈内元素

map()

特点:两个参数为映射关系,即每一个键对应一个键值

根据键值大小,从小到大排列(所以键值类型必须可以比较大小且map不允许两个元素有相同的键值)
元素为pair ,pair的第一个元素为map的键,第二个元素为map的键值。
pair<int,int>P;
P.first为键,P.second为键值
有关map的相关函数
map<键类型,键值类型>m;
初始化:map<int,int> mp;
map[1]=12;
map[2]=14;
map[3]=18;
map[8]=6;
遍历
auto it = mp.begin();//正向遍历。
//auto it=mp.rbegin();//反向遍历
//while(it!=mp.rend())
while(it != mp.end()) {
cout << it->first << " " << it->second << “\n”;
it ++;
}

set

set容器中的元素不会重复,当插入集合中已有的元素时,并不会插入进去,而且set容器里的元素自动从小到大排序。

set<int, greater > s2; // 从大到小排序

set<类型>s;
在这里插入图片描述
初始化
for(int i = 1; i <= 10; i++)
s.insert(i);
遍历
for(auto i : s)
cout << i << " ";
对结构体排序

struct as{int x, y;bool operator < (const as &p) const {// 按照点的横坐标从小到大排序,如果横坐标相同,纵坐标从小到大if(x == p.x)return y < p.y;return x < p.x;}
};set<as> s;
for(int i = 1; i <= 5; i++) {int x, y;cin >> x >> y;s.insert({x, y});
}	

/* 输入
5 4
5 2
3 7
3 5
4 8
*/

for(auto i : s)cout << i.x << " " << i.y << "\n";

/* 输出
3 5
3 7
4 8
5 2
5 4
*/

string

字符串类型
string s;
cin>>s;(与空格和回车读入结束)
getline(cin,s)//可读入空格,遇回车停止读入。
getline(字符串,个数,终止条件)

基本操作
输入
string s1,s2,s3;
cin>>s1;
s2=s1;//直接拷贝;
s3=“qas”;
s2=“qwq”
string s=s3+s2;
cout<<s;
输出结果:qasqwq
s.size() s.length() //返回字符个数
截取字符串
s1=“012345678”;
string s2 = s1.substr(2,3);
cout<<s2;
输出结果:234(从下标2开始截取3个字符)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词