今天俩人因为一段代码里面到底是用vector还是数组这个问题互掐半天最终也没个结果,结果搞得在旁围观的我也各种迷茫,特来向各位大神求助
当时情况是这样,有一堆已知长度的有百万个对象的数据,要求可以支持下标访问,因此确定可以用vector也可以用数组
vector支持者:vector作为c++提供的容器,方便易用且提供了工具函数,使用安全并可以有效防止访问时的下标越界
数组支持者:vector开销比数组大,并且会预留内存空间,大规模数据下会占用更多内存并在使用时开销更大,而数组没有这方面的问题,并且下标越界问题可以通过小心使用避免
以上是当时的情况,各有观点但是毫无干货因此导致我各种迷茫,现有如下问题:
1. 百万对象的大量数据下vector的开销与数组相比到底差多少?差在哪方面?
2. 百万对象下同样长度的vector和数组实际占用内存相差多少?随着数据增多内存差异是越来越小还是越来越大?
3. vector预留内存空间,在这样的规模下会预留多大规模的内存?能大到影响性能的地步?
4. 百万级的情况下对vector进行push_back会不会造成比较大的CPU开销?
以上是本人考虑的一些疑问,希望有大神能够指点,或者有测试方案的话也可以讨论下试试结果,多谢
当时情况是这样,有一堆已知长度的有百万个对象的数据,要求可以支持下标访问,因此确定可以用vector也可以用数组
vector支持者:vector作为c++提供的容器,方便易用且提供了工具函数,使用安全并可以有效防止访问时的下标越界
数组支持者:vector开销比数组大,并且会预留内存空间,大规模数据下会占用更多内存并在使用时开销更大,而数组没有这方面的问题,并且下标越界问题可以通过小心使用避免
以上是当时的情况,各有观点但是毫无干货因此导致我各种迷茫,现有如下问题:
1. 百万对象的大量数据下vector的开销与数组相比到底差多少?差在哪方面?
2. 百万对象下同样长度的vector和数组实际占用内存相差多少?随着数据增多内存差异是越来越小还是越来越大?
3. vector预留内存空间,在这样的规模下会预留多大规模的内存?能大到影响性能的地步?
4. 百万级的情况下对vector进行push_back会不会造成比较大的CPU开销?
以上是本人考虑的一些疑问,希望有大神能够指点,或者有测试方案的话也可以讨论下试试结果,多谢