我正在尝试编写一个基础程序来学习C++的基础知识,我正在生成100个0到100之间的随机数并将它们存储在一个向量中,然后显示向量的总和、平均值、中位数、众数、最高值和最低值。除了众数之外,我已经完成了所有其他内容。以下是我目前的代码。
int modeFunction()
{
numMode = 0;
count = 0;
for (int n = 0; n < 100; n++)
{
for (int y = 0; y < 100; y++)
{
if (numVector.at(y) == numVector.at(n))
{
numMode = numVector.at(y);
count++;
}
}
}
return numMode;
}
之后我卡住了,因为在我的脑海中应该可以工作,但实际上并没有。它只输出最后一个数字,通常是100。任何帮助都将不胜感激。
myVector
是一个std::vector<int>
(至少看起来是这样),你可以像数组一样对其进行索引:myVector[y]
和myVector[n]
将产生与myVector.at
版本相同的结果,但我认为它看起来更好。 :) - Xeoat
有定义的行为。可以说operator[]
是一种微观优化,尽管正如你所说,它也是一种风格上的差异。 - Steve Jessopat
,但是对于超出范围的访问,普通数组也有未定义的行为,尽管当你需要它时,拥有定义的行为肯定是很好的。:) - Xeoat
。我偶尔会想是否应该使用它,但实际上我从不编写当索引超出范围时会抛出异常的代码,因此它只是作为调试辅助工具,它“应该”永远不会发生。尽管称其为微优化,但这是相当多余的代码,所以最终如果我需要边界检查,我就切换到Python;-) - Steve Jessop