之前在做acm的一道两路合并排序时一直运行超时,原因就在于我习惯使用vector来存储数据。而vector和动态数组在效率上是存在区别的,所以在这里就讨论一下两者的效率。
从网上资料看在vs中debug和release模式下vector的运行时间存在差别,而对于数组 而言没有变化,且总的来说数组效率高于vector。对于stl而言不同的编译器效果不同,下面都是用vs2010进行测试。
Debug模式下的测试结果是:
基本上vector的运行时间是动态数组的50倍左右。
Release模式下的测试结果是:
vector的运行时间是动态数组的两倍左右。且相比debug模式下运行时间均有显著提高。
结论:至少在vs2010中vector的运行效率是低于动态数组的。因此在对效率要求较高的情况下建议使用动态数组。
附测试代码: