C++11 定义;常数int“;从双变量

C++11 定义;常数int“;从双变量,c++11,types,C++11,Types,我需要定义一个“const int Iteration”来定义数组“a[Iteration]”。迭代由2个“双变量”派生而来。在下面的示例中,我无法成功定义[迭代]。请帮忙。谢谢 double Range=9.4; double Step=2.2; const int Iteration=(int)(Range/Step); int a[Iteration]={0}; Range和Step不是常量表达式,因此迭代也不是常量表达式。数组绑定必须是常量表达式 您可

我需要定义一个“const int Iteration”来定义数组“a[Iteration]”。迭代由2个“双变量”派生而来。在下面的示例中,我无法成功定义[迭代]。请帮忙。谢谢

    double Range=9.4;
    double Step=2.2;
    const int Iteration=(int)(Range/Step);

    int a[Iteration]={0};

Range
Step
不是常量表达式,因此
迭代
也不是常量表达式。数组绑定必须是常量表达式

您可以使用
constexpr
关键字来确保变量是从常量表达式初始化的,并且编译器会将变量本身识别为常量表达式:

constexpr double Range=9.4;
constexpr double Step=2.2;
constexpr int Iteration=(int)(Range/Step);

int a[Iteration]={0};

Range
Step
不是常量表达式,因此
迭代
也不是常量表达式。数组绑定必须是常量表达式

您可以使用
constexpr
关键字来确保变量是从常量表达式初始化的,并且编译器会将变量本身识别为常量表达式:

constexpr double Range=9.4;
constexpr double Step=2.2;
constexpr int Iteration=(int)(Range/Step);

int a[Iteration]={0};

或者,如果变量不是编译时常量(当
constexpr
时应该是),则需要更改
a
的类型:

double Range=9.4;
double Step=2.2;
const int Iteration=(int)(Range/Step);

std::vector<int> a_v(Iteration);
std::unique_ptr<int[]> a_u(new int[Iteration]());
// or simply, but not recommended
int *a_p(new int[Iteration]());
// don't forget to delete[] a_p afterwards
双量程=9.4;
双台阶=2.2;
常数int迭代=(int)(范围/步长);
std::向量a_v(迭代);
std::unique_ptr a_(新的int[Iteration]());
//或者简单,但不推荐
int*a_p(新的int[Iteration]());
//以后别忘了删除[]a\u p

或者,如果变量不是编译时常量(当
constexpr
时应该是编译时常量),则需要更改
a
的类型:

double Range=9.4;
double Step=2.2;
const int Iteration=(int)(Range/Step);

std::vector<int> a_v(Iteration);
std::unique_ptr<int[]> a_u(new int[Iteration]());
// or simply, but not recommended
int *a_p(new int[Iteration]());
// don't forget to delete[] a_p afterwards
双量程=9.4;
双台阶=2.2;
常数int迭代=(int)(范围/步长);
std::向量a_v(迭代);
std::unique_ptr a_(新的int[Iteration]());
//或者简单,但不推荐
int*a_p(新的int[Iteration]());
//以后别忘了删除[]a\u p

谢谢您的建议。不幸的是,我的VC是不支持“constexpr”的2012版本。我必须继续使用VC 2012,因为我的测试仪VC模板需要这个版本。谢谢你的建议。不幸的是,我的VC是不支持“constexpr”的2012版本。我必须继续使用VC 2012,因为我的测试仪VC模板需要这个版本。谢谢你的建议。我采用指针来处理数组。谢谢你的建议。我采用指针来处理数组。