【发布时间】:2011-07-23 06:23:36
【问题描述】:
所以我正在尝试制作一个基本程序来学习 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版本相同的结果,但看起来更好恕我直言。 :) -
@Xeo:区别在于
at定义了索引超出范围时的行为。可以说operator[]是一个微优化,尽管正如你所说,它也有点风格差异。 -
@Steve:啊,谢谢你的花絮。 :) 还没有打扰
at,但是普通数组对于超出范围的访问也有未定义的行为,尽管在需要时定义行为当然很好。 :) -
@Xeo:说实话,我自己从不使用
at。我偶尔想知道我是否应该,但实际上我从不编写我想在索引超出范围时抛出异常的代码,所以它只是作为调试辅助,它“应该”永远不会发生。尽管称其为微优化,但它是合理数量的冗余代码,所以最后如果我想要边界检查,我只需切换到 Python ;-)
标签: c++ function random vector mode