【发布时间】:2016-07-19 17:29:11
【问题描述】:
嗯,这个问题并不像听起来那么愚蠢。
我正在使用 C++11 <array> 并想声明一个这样的数组:
array<int, MAX_ARR_SIZE> myArr;
MAX_ARR_SIZE 将在头文件中定义,可能非常大,即 10^13。目前我正在像学龄前孩子一样打字
#define MAX_ARR_SIZE 1000000000000000
如果没有其他选择,我可以忍受。我不能在这里使用pow(10, 13),因为它不能在编译时进行评估;数组初始化将失败。我不知道有任何简写方式来输入这个。
【问题讨论】:
-
好吧,您可以使用
const size_t max_array_size = 10e15;,但是这样大小的数组对于堆栈来说可能太大了。拥有MAX_ARR_SIZE表示您有某种动态大小;你不使用std::vector有什么原因吗? -
@TartanLlama 或
constexpr size_t max_array_size = 10e15; -
这闻起来像XY problem...
-
@Dilawar 不,它的类型是
size_t(无符号整数类型) -
注意:如果您的系统没有 4000(或 8000)TB 的可用内存...。
标签: c++ arrays c++11 compile-time