我觉得我一道题做不对的原因是:1.首先,平时做题就不是在有限的时间内完成 2. 做题时,逻辑没有理清,或者做题时精力不达标,思维陷入混乱 3. 思维没有流动起来,会走神或者卡顿 4. 没有把前几步记清楚,思路进行到了哪一步没有清楚。 5. 知识公式没记住。
将两个绑定的值,进行传递,返回,操作
对pair进行遍历时,右边图片里的 const 表示我们不会对pair进行操作,&表示操作的是地址,pair:scores ,表示是从scores里取每一个元素出来,取名为pair.
动态:自动分配内存,自己调整大小
元素访问里,当数组过大时,不要使用size()-1 (unsigned int 会出问题),直接 < size() 就好了
注意:如果先使用resize(),再使用了push_back(),会直接在开始规定的大小后面加上元素。
迭代器之间没有大小比较
用erase去掉重复的,也是左闭右开。
可以在常数时间内
不连续存储,但不能通过下标访问,即不可以随机访问,只能从头到尾访问,也不可以通过+1到达下一位。
关于迭代器,可以看下面一篇,写得很详细?
简单说明C++ STL list中的迭代器(iterator)_c++ list 迭代器-CSDN博客
所以,auto是用来声明迭代器的,a.begin() 可以++ 但是不能+1之类的操作。
返回元素的引用,所以用 int &a 来接收 arr.front(),对a进行操作会影响数组内的元素。
第二个元素默认,不用考虑。
我们只能操作栈顶,底下的都是不知道的。
栈不可遍历。
.size() 返回的是 unsigned int 类型的。
注意:pop()是不返回元素的,所以,如果要得到首元素且弹出首元素,要先front 后 pop
底层是一颗树,根为最大值
原本:大根堆,用less<T>?
如果想改:小根堆,用 greater<T> 定义在<functional>头文件里。
如果我们已经在使用了队列,就不会在操作中间元素了。
想要遍历队列 queue V 和 N?
关键:唯一、排序
如果是结构体,要重载一个 <?
//仿函数
struct Mycompare{
operation()(const int& a,const int& b){
//实现从小到大变为从大到小
return a>b;
}
}
int main()
{
set<int,Mycompare> myset;
}
erase(x)? 把所有x都删了,如果只想删一个?st.erase(st.find(x))
记得时间复杂度