这是一个简单的程序,我通过引用函数传递它然后找到最大值来初始化矢量。向量中的值仍为零,但不会更新为通过控制台输入提供的值。
#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;
}
答案 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,因为程序变得更加通用,你不需要在开始就知道矢量大小!