在C++中,存在这样一个令人烦恼的现象
假设
1 | //Test.h |
编译完成后,如果我们修改了Test Class
的内容,那么我们需要把所有文件再次编译,因为我们修改了Test.h
的内容,而Test.h
正好被main.cpp
所包含
既然如此,那么有没有办法让我们就算改变了实现也只用编译单个文件然后重新链接即可的方法呢?
在C++中,存在这样一个令人烦恼的现象
假设
1 | //Test.h |
编译完成后,如果我们修改了Test Class
的内容,那么我们需要把所有文件再次编译,因为我们修改了Test.h
的内容,而Test.h
正好被main.cpp
所包含
既然如此,那么有没有办法让我们就算改变了实现也只用编译单个文件然后重新链接即可的方法呢?
vector是STL中最常用的序列式容器,vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容乃新元素
vector的实现技术,关键在于对大小的控制以及重新配置时的数据移动效率
deque是双向开口的,可以在头部插入/删除,也可以在尾部插入/删除,而且都是常数时间的复杂度
而这得益于deque的其结构,deque是由多段线型空间组合而成,可以随时增加一段新的空间并连接起来
因此可以把deque看作是一个链表,而每一个链表节点则是一个数组
虽然deque也提供Random Access Iterator,但是这并不是普通的指针,可以的话尽量使用vector
1 | #include <iostream> |
为什么?既然是空的类,那么更应该是0才对
然而输出的时候,A=1,B=8,C=8
不难理解,B和C存在vtpr
,因此会占用4byte,而A并不是空,它存在隐藏的1byte