使用下面的代码,我无法弄清楚为什么numbs[numbs.size()]
没有给我一个适当的回复。我会假设它会给我排序向量中的最后一项,在这种情况下它应该是最大的。然而,cout << numbs[numbs.size()]
吐出垃圾,例如
输入数字1。 [1],最小:1。向量中有1个元素。 1.36617e-231是最大的。
#include <iostream>
#include <cmath>
#include <vector>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main()
{
double number_input = 0.0;
string unit = " ";
vector<double> numbs;
while (cin >> number_input)
{
numbs.push_back(number_input);
cout << "Number " << number_input << "entered.\n";
for(int i = 0; i < numbs.size(); ++i)
{
cout << "[" << numbs[i] << "],";
}
sort(numbs.begin(),numbs.end());
cout << "smallest: " << numbs[0] << endl;
cout << "there are " << numbs.size() << " elements in the vector.\n";
cout << numbs[numbs.size()] << " is the largest.";
}
return 0;
}
答案 0 :(得分:1)
向量中的索引是基于0的,就像数组一样。因此,向量v
中的最后一个值为v[ v.size() - 1 ]
,假设为v.size() > 0