【发布时间】:2018-07-05 16:07:03
【问题描述】:
如此简单的代码:
int n;
cin >> n;
int s[n], p[2*(n-1)][3];
我必须翻译成:
int n;
cin >> n;
vector<int> s(n, 0);
vector<vector<int>> p(2 * (n - 1), vector<int>(3));
我想看到类似的东西:
int n;
cin >> n;
mat s(n), p(2*(n-1), 3);
我绝对不想将new\make_unique 和std::array+std::vector 混合用于这些简单的东西。恕我直言,两行是一个丑陋的混乱,所以我寻求一种方法来保持 C 像 sintax。
那么什么是解决方法?任何基于 C++ 类型的定义/标准标头/可复制粘贴的 STL?
【问题讨论】:
-
C++ 标准不支持 VLA(但某些编译器的扩展支持,例如:g++)。
-
答案:C++ 中没有 VLA。
-
第二个sn-p有什么问题?对我来说,完全不清楚问题是什么
-
IMO 唯一的解决方法是您问题中的第二段代码。它出什么问题了?如果您认为它是“一团糟”,那么 C++ 可能不适合您。
标签: c++ arrays vector visual-studio-2017 variable-length-array