在OI等竞赛中,C++STL的速度真的很不理想吗

2025-12-17 16:43:01
推荐回答(1个)
回答1:

STL 速度不理想,在竞赛题情境下是可能的。举常用的 vector 的例子,如果你可以开数组就满足条件,因为 stack 总会比 heap 快一点,这时候就不一定要用 vector。
如果单纯拿 vector 和用 c 写一个来比较,其实可能是 c 更快。但不是因为迭代器之类,而是因为 realloc。如果你使用 realloc 来实现 vector 的增长…根据当时情况可能是 O(1) 的(原地增长申请空间从而避免 copy),但是 C++ 并没有对应的函数(因为一些显而易见的原因,例如假设 new 出来的是对象,那你 realloc 之后要不要析构?),而你也不应该把 new 出的拿去给 realloc 用,如果你有快速增长的需求可能就会发现这时 vector 比可以使用 realloc 来实现的情形慢。