野史几则(一)
-
vector搬家的时候会把老家里的东西全部丢掉,但是依旧宣称老家是只属于它自己的,并且肘击所有试图住进它老家的人。[^1] -
vector<bool>小时候很不安分,天天跑到隔壁bitset家里去进行某种活动^2。某一天vector<T>看到vector<bool>捂着屁股从bitset家里跑出来,气疯了,活活打断了vector<bool>的双腿,然后把它赶出了家门。 -
vector<bool>由于被打断了双腿看起来比其他兄弟矮一截,还患上了 ptsd。如果有人从它后面突然吓唬它,它会疯了一样大喊大叫然后把vector<bool>::reference甩的到处都是。 -
forward_list和vector<bool>同样喜欢某种活动。list发现后用 502 把forward_list的屁股封上了,自此以后forward_list再也无法从后面插入了😭😭😭 [^3] -
forward_list很不服气,决定找它的哥哥list报仇。很不幸的是list提前知道了forward_list的计划,forward_list被反杀,打到了半身不遂,至此连最基础的splice_after都变成了\mathcal{O}(n) 的😭😭😭😭😭 -
现在
forward_list还没找到工作,因为它太废物,没人愿意要它,它只能流浪街头憋屈致死了。不过幸好它很瘦,吃的也少,因此还能凑合凑合渡日子。呜呜呜我的forward_list😭 -
forward_list去苹果商店想买一台占用内存更小的苹果手机。到家了一看买到了菠萝手机。[^4] -
deque是一头肥猪。\o/\o/\o/\o/\o/ -
deque上小学时做家庭作业遇到了一道关于绝对众数的难题。它为了解决这个难题复制了10^6 个自己,却没想到由于自己太肥了把房子压塌了。 -
最后
deque一个众数都没求出来,被老师打了一顿。 -
set小时候是可以维护排名的。C++ 标准委员会让set维护所有容器push_back速度的排名,结果每次一查set总是倒数第一。为此set天天被皮带抽的如陀螺一般旋转。 -
set不服气,它申诉说自己要维护排名所以插入速度慢,一怒之下直接丢掉了排名来优化insert( const_iterator pos, value_type&& value )的速度。 -
unordered_map是大小姐,家里有很多钱,为此经常有人想要绑架unordered_map索取赎金。 -
umap毫不在意这些谣言,每天上下学都走一条叫做126271 的道路。某一些劫匪敏锐的注意到了这一点,于是他们趁大小姐没有防备直接在这条路上把大小姐拐走了。 -
set和multiset在桌旁一起吃一直全鸡。本来他们约定一人一只鸡腿,可是set还没开吃multiset就把桌上的鸡腿一口气吃完了,不仅如此还跑到厨房把冷冻层的50 个冻鸡腿都撕吧撕吧啃了。 -
set不得不在让multiset吃东西的时候特别指定是吃一个,还是把所有东西一口气吃完。 -
__int128_t由于长相太过离奇被其他基本数据类型赶出了家。它听说abs非常好心,收留了所有数据类型,于是邋里邋遢地跑到abs家门口求收留。 -
结果到了地方一看,嚯,走错了,走到了
<cmath>家里。abs过去看了看,发现不是int,给了__int128_t一个响亮的大嘴巴子。 -
basic_string小时候和vector有竞争关系,但是次次被vector压着打,一怒之下从 Containers library 叛逃到了 Strings library。 -
据说
array是 C 派给 C with STL 的内鬼,目的是暗杀那些用 STL 不初始化的人。 -
priority_queue是残疾人,和其他正常堆相比不能erase。不过好在有好心人给它打造了轮椅,不过即使如此它的体力也还是不如正常人。
[^1]: .clear() 并不会释放 vector 占用的空间。需要 .shrink_to_fit()。
[^3]: 仅提供了 _after 一系列修改函数。但是你无法得知 .end() 前面的迭代器。
[^4]: forward_list 的 splice_after 是 .size()。我实在想象不出这个鬼东西为什么被这么设计。