在屏幕上显示矢量
Displaying vectors on Screen
我一直在阅读有关如何在 C++ 中创建一定数量的数组并使用 for 循环填充这些数组的资料。到处都说我需要使用向量。我已经创建了数组并使用向量填充它们(我认为)。当我编译并 运行 显示数组时,一切正常。当我尝试显示数组的内容时,程序编译正常但当我 运行 它时崩溃。
我正在尝试创建 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.
初始化你的向量
但是然后你 append 你的新载体。这意味着你最后有 2*numArrays
个向量。
崩溃来自向量的前半部分:
j<arrays.at(i).size() - 1
中的负1:size()
returns一个无符号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()
ness 测试
我一直在阅读有关如何在 C++ 中创建一定数量的数组并使用 for 循环填充这些数组的资料。到处都说我需要使用向量。我已经创建了数组并使用向量填充它们(我认为)。当我编译并 运行 显示数组时,一切正常。当我尝试显示数组的内容时,程序编译正常但当我 运行 它时崩溃。
我正在尝试创建 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.
初始化你的向量
但是然后你 append 你的新载体。这意味着你最后有 2*numArrays
个向量。
崩溃来自向量的前半部分:
j<arrays.at(i).size() - 1
中的负1:size()
returns一个无符号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()
ness 测试