在屏幕上显示矢量
Displaying vectors on Screen
我一直在阅读一些关于如何创建一定数量的数组并使用 for 循环填充这些数组的文章 C++.到处都说我需要使用向量。我已经创建了数组并使用向量填充它们(我认为(。当我编译并运行显示数组时,一切都很好。当我尝试显示数组的内容时,程序编译正常,但在运行时崩溃。
我正在尝试创建 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<int>
s初始化向量。
但随后你附加了你的新向量。这意味着您最后有2*numArrays
向量。
崩溃来自向量的前半部分:
- 减 1
j<arrays.at(i).size() - 1
:size()
返回无符号 0,减 1 是最大值。 -
arrays.at(i).back()
试图获取不存在的最后一个元素。
要解决此问题,请替换此行
std::vector<std::vector<int> > arrays(numArrays);
由
std::vector<std::vector<int> > arrays;
arrays.reserve(numArrays);
并在计算size() - 1
之前添加非empty()
性测试。
相关文章:
- Winapi:屏幕截图未显示在窗口中
- 如何在快板的屏幕中显示子位图的绘制?
- SFML 中的字体.信息不显示在屏幕上.显示的不是信息,而是点
- 如何使用 openGL 在屏幕上显示加载的纹理
- 如何使用方法覆盖在输出屏幕上显示堆栈整数值
- 如何使用TouchGFX在LCD屏幕上显示ADC值
- 为什么屏幕上显示了一半的三角形
- 如何在屏幕上显示对象列表?
- C++列出屏幕以在第二台显示器中显示图像
- 显示和隐藏Windows 10屏幕键盘(osk.exe)时遇到问题
- 将25个甚至整数存储到一个名为intlist的整数阵列中,然后在屏幕上显示数组,并在屏幕上显示名为fivintegers
- QML强制窗口将在第一个屏幕上显示
- 如何使用OpenGL在屏幕上显示三角形
- 从文本文件中读取行并显示在屏幕上
- 我的程序没有将字符显示在屏幕上
- 在屏幕上显示矢量
- 在同一屏幕上显示两个不同的对象
- 屏幕显示脚本中'.'令牌之前的预期非限定 id
- C / SFML:使用两个递归调用在屏幕上打印凸形形状仅显示第一个递归调用中的形状,而不是第二个
- 如果我使用的是迭代器,为什么在c++中没有屏幕显示呢