与.size()结果的C ++向量混淆

时间:2014-10-22 22:13:10

标签: c++ vector size

使用下面的代码,我无法弄清楚为什么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;
}

1 个答案:

答案 0 :(得分:1)

向量中的索引是基于0的,就像数组一样。因此,向量v中的最后一个值为v[ v.size() - 1 ],假设为v.size() > 0