我正在尝试在main函数之外声明一个大小为100001x100001的2D数组,但是我得到“数组的大小太大”。 我该怎么做 ? 我的代码
bool connected[100001][100001];
main()
{
...
}
答案 0 :(得分:2)
您可能希望使用uint8_t
而不是bool来压缩此矩阵。
假设每个uint8_t有8个bool。 100001/8 = 12,500 因此,在每一行中,有12,500列。
宣言将是:
uint8_t connections[100001][100001/8];
大多数编程环境都不允许您在全局区域声明一个巨大的数组。您可能需要调整默认设置才能执行此操作。
另一种选择是使用动态分配:
int main(void)
{
const unsigned int allocation_size = 100001 * (100001 / 8);
uint8_t * connections = new uint8_t [allocation_size];
// ...
delete[] connections;
return 0;
}
您必须使用 bit twiddling 来访问相应的列。