【发布时间】:2018-02-26 17:17:52
【问题描述】:
今天我正在和我的朋友讨论在 C++ 中传递对象数组的正确方法。这两者之间是否有效率差异:
Struct Apple {
std::string color;
}
void colors(Apple A[]) {
A[0].color = "red";
}
int main() {
Appple apples[10];
colors(apples);
return 0;
}
.
Struct Apple {
std::string color;
}
void colors(std::array<Apple, 10>& A) {
A[0].color = "red";
}
int main() {
std::array<Apple, 10> apples;
colors(apples);
return 0;
}
【问题讨论】:
-
性能方面?
-
是的。对不起,如果我不清楚:)。
-
@Marker 它发生在编译时
-
'代码 A 比代码 B 快吗? - 为什么不尝试一下并找出答案。
-
@Marker
std::array是一个聚合,因此它没有构造函数。如果你把一些可以简单初始化的东西放在里面,那么只会有一个堆栈分配,仅此而已。这是一个零成本的抽象。
标签: c++ arrays object struct stdarray