[c++学习打卡]STL

发布时间:2023年12月30日

我觉得我一道题做不对的原因是:1.首先,平时做题就不是在有限的时间内完成 2. 做题时,逻辑没有理清,或者做题时精力不达标,思维陷入混乱 3. 思维没有流动起来,会走神或者卡顿 4. 没有把前几步记清楚,思路进行到了哪一步没有清楚。 5. 知识公式没记住。

pair

将两个绑定的值,进行传递,返回,操作

对pair进行遍历时,右边图片里的 const 表示我们不会对pair进行操作,&表示操作的是地址,pair:scores ,表示是从scores里取每一个元素出来,取名为pair.

vector

动态:自动分配内存,自己调整大小

元素访问里,当数组过大时,不要使用size()-1 (unsigned int 会出问题),直接 < size() 就好了

注意:如果先使用resize(),再使用了push_back(),会直接在开始规定的大小后面加上元素。

迭代器之间没有大小比较

用erase去掉重复的,也是左闭右开。

list

可以在常数时间内

不连续存储,但不能通过下标访问,即不可以随机访问,只能从头到尾访问,也不可以通过+1到达下一位。

关于迭代器,可以看下面一篇,写得很详细?

简单说明C++ STL list中的迭代器(iterator)_c++ list 迭代器-CSDN博客

所以,auto是用来声明迭代器的,a.begin() 可以++ 但是不能+1之类的操作。

返回元素的引用,所以用 int &a 来接收 arr.front(),对a进行操作会影响数组内的元素。

stack

第二个元素默认,不用考虑。

我们只能操作栈顶,底下的都是不知道的。

栈不可遍历。

.size() 返回的是 unsigned int 类型的。

queue

注意:pop()是不返回元素的,所以,如果要得到首元素且弹出首元素,要先front 后 pop

priority_queue

底层是一颗树,根为最大值

原本:大根堆,用less<T>?

如果想改:小根堆,用 greater<T> 定义在<functional>头文件里。

deque

如果我们已经在使用了队列,就不会在操作中间元素了。

做题出错

想要遍历队列 queue V 和 N?

set

关键:唯一、排序

如果是结构体,要重载一个 <?

仿函数

//仿函数
struct Mycompare{
    operation()(const int& a,const int& b){
        //实现从小到大变为从大到小
        return a>b;
    }
}

int main()
{
    set<int,Mycompare> myset;
}

multiset

erase(x)? 把所有x都删了,如果只想删一个?st.erase(st.find(x))

记得时间复杂度

unordered_set

文章来源:https://blog.csdn.net/weixin_73512213/article/details/135225677
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。