更新的矢量元素不打印

Updated vector elements do not print

本文关键字:打印 元素 更新      更新时间:2023-10-16

下面的代码在替换小于第一个和最后一个元素平均值的元素后不会打印更新的矢量元素。

如何改进此代码,用户输入指定长度的数组,并将小于第一个和最后一个元素的平均值的每个元素替换为平均值。

有没有更好的方法将向量传递给函数,或者更有效的方法来管理内存?

#include <iostream>
#include <vector>
std::vector<double> getData()
{
int n;
std::vector<double> intputData;
std::cout << "Enter array lengthn";
std::cin >> n;
std::cout << "Enter the numbersn";
for(int i = 0; i < n; i++){
int tmpIn;
std::cin >> tmpIn;
intputData.push_back(tmpIn);
}
return intputData;
}

void modifyData(std::vector<double> &data_mo)
{
double f=data_mo[0];
double l=data_mo[data_mo.size() - 1];
double av = (f + l)/2;
for (auto j: data_mo)
{
if(j < av){
j = av;
}
}
}
void printData(std::vector<double> &data_pr)
{
for (auto i: data_pr)
{
std::cout << i << " ";
}
std::cout << 'n';
}
int main(){
std::vector<double> data_ma = getData();
modifyData(data_ma);
printData(data_ma);
return 0;
}

modifyData需要基于范围的for循环来通过引用修改元素,否则您的修改是在元素的副本上工作,而不是元素本身。

改变

for (auto j: data_mo)

for (auto &j: data_mo)

此外,一个简单的改进是使printData通过常量引用获取其参数,因为向量不会更改。

void printData(const std::vector<double> &data_pr)