矢量不会添加值

时间:2015-02-26 04:25:58

标签: c++ vector

这是一个简单的程序,我通过引用函数传递它然后找到最大值来初始化矢量。向量中的值仍为零,但不会更新为通过控制台输入提供的值。

#include <iostream>
#include <vector>

using namespace std;

void initialize(vector<int>& v) {
    int n;
    for (int i = 0; i < 10; i++) {
        cout << "Please enter the value " << (i + 1) << ": ";
        cin >> n;
        v.push_back(n);
    }
}

int findMax(vector<int>& v, int& max) {
    int iMax = 0;
    for (int i = 1; i < 10; i++) {
        if (v[i] > max) {
            cout << endl << "v[" << i << "] = " << v[i] << endl;
            max = v[i];
            iMax = i;
        }
    }
    return iMax;
}

int main() {
    vector<int> v(10);
    initialize(v);
    int max = v[0];
    int x = findMax(v, max);
    cout << "The maximum value is " << max << " and is strored at the index position " << x << endl;
    system("pause");
    return 0;
}

2 个答案:

答案 0 :(得分:2)

vector<int> v(10);

使前10个元素为0.然后你在push_back中使用initialize,它会添加第11到第20个元素。

您可以通过将以上行更改为:

来解决此问题
vector<int> v;

或使用

v[i] = n;
initialize

中的

答案 1 :(得分:0)

不需要已经初始化的向量的Push_back。继续使用迭代器或索引并逐步执行它并替换值。

我建议只是一个声明向量v;而且使用push_back,因为程序变得更加通用,你不需要在开始就知道矢量大小!