从另一个数组值初始化数组大小 #包括 使用名称空间std; 常量int vals[]={0,1,2,3,4}; int newArray[vals[2]]//“错误:数组绑定不是整数常量” int main(){ 返回VAL[2]; } //如果删除错误行,则返回2 为什么不工作?< p> C++编译器只能分配一个在编译时已知大小的数组。如果要分配可变大小的内存,请使用new运算符不是常数表达式!在即将推出的标准中,您可以使用constexpr(在g++4.6中实现)轻松请求编译时评估: #include<iostream> using namespace std; const int vals[] = {0, 1, 2, 3, 4}; int newArray[ vals[2] ]; //"error: array bound is not an integer constant" int main(){ return vals[2]; } //returns 2 if erroneous line is removed #包括 使用名称空间std; constexpr int vals[]={0,1,2,3,4}; int newArray[vals[2]];//VAL[2]现在是一个常量表达式! int main(){ 返回VAL[2]; }

从另一个数组值初始化数组大小 #包括 使用名称空间std; 常量int vals[]={0,1,2,3,4}; int newArray[vals[2]]//“错误:数组绑定不是整数常量” int main(){ 返回VAL[2]; } //如果删除错误行,则返回2 为什么不工作?< p> C++编译器只能分配一个在编译时已知大小的数组。如果要分配可变大小的内存,请使用new运算符不是常数表达式!在即将推出的标准中,您可以使用constexpr(在g++4.6中实现)轻松请求编译时评估: #include<iostream> using namespace std; const int vals[] = {0, 1, 2, 3, 4}; int newArray[ vals[2] ]; //"error: array bound is not an integer constant" int main(){ return vals[2]; } //returns 2 if erroneous line is removed #包括 使用名称空间std; constexpr int vals[]={0,1,2,3,4}; int newArray[vals[2]];//VAL[2]现在是一个常量表达式! int main(){ 返回VAL[2]; },c++,arrays,initialization,C++,Arrays,Initialization,编译时甚至可能不知道const表达式的值。例如,可以使用函数返回的内容初始化常量,如 #include<iostream> using namespace std; constexpr int vals[] = {0, 1, 2, 3, 4}; int newArray[ vals[2] ]; // vals[2] is a constant expression now! int main(){ return vals[2]; } P>这不是你认为的常数或者

编译时甚至可能不知道
const
表达式的值。例如,可以使用函数返回的内容初始化常量,如

#include<iostream> 
using namespace std; 

constexpr int vals[] = {0, 1, 2, 3, 4}; 

int newArray[ vals[2] ]; // vals[2] is a constant expression now!

int main(){
    return vals[2];
}

<> P>这不是你认为的常数

或者甚至更好, STD::vector < /C> >看起来像是对其他问题的回答。第一句应该是“你可以在标准C++中(自从C++ 11以来)就这样做了,如果我理解正确,你就不能在C++ 03或更早的时候做它(或类似的事情)。
const int size = rand(); // random size