【发布时间】:2018-09-19 08:56:19
【问题描述】:
以下代码将 std::array 推回 std::vector N 次。有没有更优雅和更短的方法来做到这一点?
#include <iostream>
#include <vector>
#include <array>
#include <iomanip>
#include <complex>
#include <cmath>
int main () {
int N=10;
std::vector< std::array<std::complex<double>,3> > v;
v.reserve(N);
for(int i=0;i<N;i++){
std::array<std::complex<double>,3> el { {0.0,3.0,0.0} };
v.push_back(el);
}
}
【问题讨论】:
-
你的数组是固定的吗?
-
在你的简单情况下,如果完全是这种情况,则不需要推送,只需初始化它:coliru.stacked-crooked.com/a/074dc1039efb7613
-
@kiranBiradar 是的
-
@user1810087 在这个简单的例子中你是对的。但在我的代码中,向量是一个类的成员。当我创建一个对象时,我必须指定向量的大小。这就是我使用 v.reserve() 的原因
-
@JanSE 您可能应该在问题中提及这一点。就像现在一样,为什么您当前示例的更好答案不是被接受的答案令人困惑。