我有一个数组,比如 ARR,并且 ARR 中的对象总数是已知的。我想将 ARR 中每个对象的属性复制(放入)到 STL 向量中,例如 VEC。
一种方法是遍历 ARR
VEC.pushback(ARR[i].att);
另一种方式是
VEC.resize(ARR.size());
VEC[i] = ARR[i].att;
它们对运行时性能有影响吗?哪一个更好?谢谢。
跟进:我想为有兴趣的人提供一些实验结果。我通过将 50000 个整数放入 STL 向量中尝试了 (1) resize() + '=' 和 (2) reserve() + push_back() 方法。
(1) takes 0.000201s;
(2) takes 0.000229s.
- 两者都是用 g++ -O3 编译的,我运行了几次程序。
- (1) 始终优于 (2)。
- (1) 有额外的分配,因此在空间方面占用了更多的内存。