C++ Vector<int> 数组初始化

标签 c++ arrays vector stl initialization

给定以下代码:

vector<int> A[1000000];
for( int i = 0; i < 1000000; i++ ){
    A[i].clear();
}

我在自动终端上运行它,该终端的测试用例与我的代码一起运行,因此我无法获得完整的调试消息。我没有收到任何错误,并且该程序似乎在单个测试用例中运行良好。然而,当我与完整的测试集比赛时,我会随机通过/失败测试用例(有一次我可能通过了前 3 个,另一个我通过了除它们之外的所有测试,另一个我只通过了第二个,等等)。我想确保这种初始化会摆脱数组上的“未定义”值(例如 char *buffer = new char[100]; buffer[0] = 0;),以便它不是随机崩溃的原因。

sizeof(A) == 24000000(~23MB),sizeof(int) == 4。我只向这些 vector (总共)添加最多 100 万个整数,因此在最坏的测试中,每个 vector 可能是一个单元素 vector ,或者单个 vector 可能有 100 万个整数,而其余的仍然为空。

我必须调用析构函数吗?我假设不是因为我从来没有叫过新的,但我是 STL 的新手。最后,这可能不是我的代码的问题,而是测试人员的问题,但我仍然想确保这对我来说没问题。

最佳答案

我认为这是一个堆栈溢出,正如 M.M 所建议的那样。线路

std::vector<int> A[1000000];

在堆栈上创建一百万个 vector 对象,这太多了。在我的机器上,该示例对一百万个 vector 失败,但对一千个 vector 运行良好。

关于C++ Vector<int> 数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41561521/

相关文章:

JavaScript 数组 |如果值包含字符串,则返回索引

C# XML 数组反序列化

C++字符串到双重转换

c++ - 为什么包含 .h 也会使 .cpp 源代码随之而来?

c++ - Openmp:无法正确计算并行 for 循环内的作业状态

javascript - 创建一个顺序数组,从一定数量开始,有一定数量的项目

c++ - 将以二进制给出的两个整数相乘

c++ - 返回 vector 迭代器的函数

java - 操作 vector 的单个元素

c++ - 使用无锁指针队列在线程之间移动数据是否安全