gpt4 book ai didi

c++ - 在屏幕上显示 vector

转载 作者:行者123 更新时间:2023-11-28 05:12:13 24 4
gpt4 key购买 nike

我一直在阅读有关如何在 C++ 中创建一定数量的数组并使用 for 循环填充这些数组的资料。到处都说我需要使用 vector 。我已经创建了数组并使用 vector 填充它们(我认为)。当我编译并运行并显示数组时,一切正常。当我尝试显示数组的内容时,程序编译正常但在运行时崩溃。

我正在尝试创建 100 个数组,每次数组的大小增加 500 个元素。 (这是我们需要测试算法有效性的作业。)

unsigned int numArrays = 100;
unsigned int arraySize = 0;
//Create holder variable:
unsigned int randomInt = 0;
//Create the arrays:
std:vector<std::vector<int> > arrays(numArrays);

for(std::size_t i=0; i< numArrays; i++){

arraySize = i * 500;
vector<int> temp;
temp.reserve(arraySize);

for(int j=0; j< arraySize; j++){

//Generate Random number:
randomInt = rand();
//Add the number to the array:
temp.push_back(randomInt);

}
arrays.push_back(temp);
}


for(int i=0; i<arrays.size(); i++){

cout << "{";
for(int j=0; j<arrays.at(i).size() - 1; j++){

cout << arrays.at(i).at(j) << ",";

}
cout << arrays.at(i).back() << "}" << endl;
}

我假设错误出在最后的嵌套循环中,但我不确定。提前致谢。

最佳答案

std:vector<std::vector<int> > arrays(numArrays);

在这里你用numArrays初始化你的 vector 空 vector<int> s.
但是随后您附加您的新载体。意思是你最后有 2*numArrays载体。

崩溃来自 vector 的前半部分:

  • j<arrays.at(i).size() - 1 中的负 1 : size()返回无符号0,负1为最大值。
  • arrays.at(i).back()尝试获取不存在的最后一个元素。

要解决这个问题,请替换这一行

std::vector<std::vector<int> > arrays(numArrays);

通过

std::vector<std::vector<int> > arrays;
arrays.reserve(numArrays);

并为非 empty() 添加一个测试计算前的 ness size() - 1 .

关于c++ - 在屏幕上显示 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43289513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com