想要学会c++的STL?这一篇文章就足够啦!

c++的特性:封装、继承、多态,比起c语言是真的香啊
记录一下STL的部分容器及基本操作,至于那些算法,知道对应底层原理就行了,
个人感觉如果不是为了比赛追求效率没必要特意记,不然面试时让你手撕你撕不出就尴尬了。

STL

模板创建:类型<存放的数据类型>名称(可以加仿函数改变原有规定,俗称改轮子hh)
两种常用迭代器举例:
vector::iterator itBegin=test.begin()//起始迭代器,指向第一位
vector::iterator itEnd=test.end()//结束迭代器,注意,end指向的是动态数组最后一个元素的下一位
接着进行while或for循环迭代即可,其中itBegin和itEnd可直接用了

动态数组vector
vectortest; // 定义的时候不指定vector的⼤⼩
vectortest2(6); // 定义的时候指定vector的⼤⼩,默认test2⾥⾯元素都是0
vectortest3(6, 3); // 定义的时候指定vector的⼤⼩,默认test3⾥⾯元素都是3

test.push_back(5) 尾部添加元素5
test.insert(test.begin()+i,value);//在第i+1个元素前面插入value
test.erase(test.begin() + 5,n);//从下标为5的元素开始,删除后面n个
test.clear();//clear
sort(test.begin(),test.end());

当然,vector也可以嵌套 vectorv

双端数组deque
deques
跟vector差不多

链表list
listlst
remove(elem) 移除链表中值为elem的结点

栈stack
stacks
s.empty() 如果栈为空返回true,否则返回false
s.size() 返回栈中元素的个数
s.pop() 删除栈顶元素但不返回其值
s.top() 返回栈顶的元素,但不删除该元素
s.push() 在栈顶压入新元素

队列queue
queueq
q.push(x):将x元素接到队列的末端;
q.pop() 弹出队列的第一个元素,并不会返回元素的值;
q.front()访问队首元素
q.back()访问队尾元素
q.size()访问队中的元素个数

集合set
sets
s.count(elem) 查找元素elem,返回elem的个数

map
map中基本是对值进行相关操作,例如查找排序
mapm
m[“hello”] = “world”
m.insert(pair(a,b))

字符串String操作
s.length()和s.size()都是字符串长度
s.substr(a,b) 从下标a开始,后面b个长度的字符子串
s.empty() 判断字符串是否为空
s.find(t) 查找t是不是s的子串,返回位置,从头开始
s.rfind(t)从尾部开始
s.replace(start,end,string) 开头,需要替换多少个字符,需要替换的字符串
s.insert(s.begin()+i,value);//在第i+1个元素前面插入value
s.erase(s.begin() + 5,n);//从下标为5的元素开始,删除后面n个

reverse(s.begin(),s.end())

当然,对于map和set这两种特殊容器本身自带从小到大的排序规则,可以通过创建仿函数,并在创建模板时声明排序规则为该仿函数即可




觉得该篇文章有用的请不要忘记忘记点击右下角的大拇指~

欢迎大家关注我的公众号:Smooth前端成长记录
公众号同步更新CSDN博客内容,想方便阅读博客的C友可以来关注我的公众号以便获得更优良的阅读体验~
在这里插入图片描述

你可能感兴趣的:(C++,c++,stl,数据结构,其他)