1.虚函数表相关:
图说C++对象模型:对象内存布局详解 - melonstreet - 博客园
2.设计模式相关
我所理解的设计模式(C++实现)—— “一句话总结”和索引_十八道胡同的博客-CSDN博客
3.STL模板相关
最推荐官方文档,自己去看
map::emplace_hint - C++ Reference
我个人的总结:vector、list、deque、queue、map、stack
对操作顺序有要求的,像queuq、stack:没有迭代器和reverse();
没有遍历概念的,像map,有迭代器,没有reverse();
其余,vector、list、deque,迭代器,reverse()都有;
具体如下:
vector:动态数组,有迭代器,有reverse();
list:双向链表,有迭代器,有reverse();
deque:双向队列:是片段连续的存储空间,有迭代器,有reverse();
queue:队列,没有迭代器和reverse();
priority_queue:优先队列,队首是最大的元素,最大元素先出队,没有迭代器和reverse();
map:红黑树,key-value,key是唯一的,有迭代器,没有reverse();
multimap:key-value,key可以是不唯一的,有迭代器,没有reverse();
stack:没有迭代器和reverse();
在使用erase、insert、emplace等函数时,要用一个迭代器去承接返回值,否则原先的迭代器可能会失效;
erase在循环删除时尤其要注意:返回值返回的是下一个元素的地址,所以增量运算的话会跳过一个。
正确写法:
for (it = a.begin(); it != a.end();)
{
if (it->second == 10)
{
it=a.erase(it);
}
else
it++;
}
4.面试相关:
C++面试总结之常用基础知识_南方铁匠的博客-CSDN博客_c++基础知识
等