一些零碎的知识点
花了2个月的时间看或者学完了b站的东西,完整的学习请参考b站黑马程序员教程和清华的教材。
1、const形参的作用
void printDeque(const deque<int>& d)
{
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
上面的代码作用是打印,不希望打印的内容被修改,其中const
来实现这个功能,避免下面的情况发生。
另外,注意第一行参数前面的&
。
void printDeque(const deque<int>& d)
{
d[0]=6;//error!!它的值被意外改变了,不能打印出正常的数据
}
2、vector和deque容器的区别
vector中有函数 capacity(); //容器的容量
deque容器中没有capacity();//因为它的容量是无限的
3、引用’&‘的好处
如果想让函数的形参和实参同步修改的话,函数形参要用引用的方式。
4、五种迭代器
Input iterator(输入迭代器) | 读,不能写;只支持自增运算 |
---|---|
Output iterator(输出迭代器) | 写,不能读;只支持自增运算 |
Forward iterator(前向迭代器) | 读和写;只支持自增运算 |
Bidirectional iterator(双向迭代器) | 读和写;支持自增和自减运算 |
Random access iterator(随机访问迭代器) | 读和写;支持完整的迭代器算术运算 |
5、STL常用容器
容器名称 | 特点 |
---|---|
string | 字符串 |
vecto | 单端数组,可以动态扩展,迭代器是随机访问迭代器 |
deque | 双端数组,首尾都可以进行插入操作,迭代器是随机访问迭代器 |
stack | 栈,先进后出,只有顶端的元素才可以被外界使用,不允许有遍历行为 |
queue | 队列,先进先出,只有队头和队尾才可以被外界使用,不允许有遍历行为 |
list | 链表,将数据进行链式存储,迭代器只支持前移和后移 |
set | 插入时自动排序 |
map | 插入时自动排序,所有元素都是pair |
List和vector是两个最常被使用的容器
6、b站p235小节在vs2019下不能运行的错误修正
主要在第三行上加一个const
class MyCompare {
public:
bool operator()(int v1, int v2) {
return v1 > v2;
}
};
改成
class MyCompare {
public:
bool operator()(int v1, int v2)const {
return v1 > v2;
}
};
7、比较运算符__返回一个布尔值
主要有"=="、"!="、">"、">="等。
8、仿函数的2种用法
第一种:
bool myCompare(int val1 , int val2)
{
return val1 > val2;
}
L.sort(myCompare);
第二种:
class myCompare
{
bool operator()(int val1 , int val2)
{
return val1 > val2;
}
}
L.sort(myCompare());
实现的效果是一样的,都能够对排序规则进行更改。
9、容易搞混的单词
migrant 移民
merge 合并
10、vector使用“[ ]”时的问题
vector<int> v;
for (int i = 0; i < 10; i++)
{
v[i]=i;//这样是不行的要先开辟合适的空间给他
}
改成如下的形式就好了。
vector<int> v;
v.resize(10);//指定它的长度为10
for (int i = 0; i < 10; i++)
{
v[i]=i;
}
11、binary_search不能在无序序列中使用
无序序列 13569412
有序序列 1235689
12、完成b站视频学习
20210906-20211105
历时2个月,手写了很多代码。
13、system(“PAUSE”)
是暂停的意思,等待用户信号;不然控制台程序会一闪即过,你来不及看到执行结果