c++ - 将 std::array 推回 std::vector N 次的优雅方法
问题描述
以下代码将 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);
}
}
解决方案
是的,但是在构造向量时必须使用括号
std::vector< std::array<std::complex<double>,3> > v(n, {0.0,3.0,0.0});
如果使用大括号,则首选初始化列表,在这种情况下,您可能会遇到意外错误。
推荐阅读
- python - 如果使用 Tensorflow 的 ObjectDetection API,需要 NormalizeImage?
- apache-spark - 来自 Apache Kafka 的 Spark Streaming
- c# - 将 EF 属性分配给变量时出现“对象引用未设置为对象的实例”异常
- javascript - 如何重新启动 Jquery 事件,避免每个事件重复?
- c# - Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册并且 Visual Studio 中无法识别的数据库格式 accdb
- sqlalchemy - 在运行时为 SQLAlchemy 的 EncryptedType 指定一个密钥
- swift - 从未使用过不可变值“rate”的初始化
- typescript - 使用 Jest 模拟对象数组
- javascript - 以 HTML 格式显示 API 响应数据
- diagram - 从代码创建可视化的类似划痕的图表