Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

总结一下如何使用std::vector才能不被卡常

Posted by fluorinedog at 2018-01-05 12:03:10 on Problem 3728
std::vector其实优化后可以和数组一样快,还有一个独特的优势是如果打开-D_GIBCXX_DEBUG编译选项后,下标访问越界会报错,debug的时候非常方便(而且这样就不存在把数组稍微开大点的玄学问题了)

不过vector的首次初始化非常花时间,一定要分配大块数组,千万不要在每个节点里面写vector<Edge> neighbors这样的愚蠢操作。

push_back放心用,非常快。不过记得提前reserve避免realloc的开销。

BTW,
list我没试过,但是非常快且好用的forward_list属于C++11的内容,在poj以外的平台可以放心用,和手写的单链表等价(这玩意为了效率甚至不支持size)。
还有不要碰cin/cout,慢得要死,最好是自己封装一个假的cin/cout,把内部实现改成手动解析,这样写起来也会很爽。


Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator