更新的矢量元素不打印
Updated vector elements do not print
下面的代码在替换小于第一个和最后一个元素平均值的元素后不会打印更新的矢量元素。
如何改进此代码,用户输入指定长度的数组,并将小于第一个和最后一个元素的平均值的每个元素替换为平均值。
有没有更好的方法将向量传递给函数,或者更有效的方法来管理内存?
#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)
相关文章:
- 从控制台中删除最后打印的元素
- 数组元素打印的递归方法
- 打印所有链表的元素 (C++)
- 更新的矢量元素不打印
- 打印矢量数组中的所有元素
- 为什么我在尝试在单向链表中打印元素时会出现这个永无止境的循环
- 如何在c ++中打印给定桶号的所有元素unordered_set?
- 为什么平均打印数组元素比打印单个对象慢C++?
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- C++ Expat 仅打印元素的第一个字母和标签中的数据
- 如何在 2D 字符数组中打印 [x][y] 元素的地址?(C++)
- C 打印元素总和
- C 打印元素,带有来自对象数组的数据
- 将数组传递到空隙函数,然后递归打印元素
- 使用std :: lower_bound()打印元素范围以下某些值以下
- 3D 指针数组的打印元素
- 如何打印元素的地图内部的矢量
- 中缀,前缀或后缀顺序通过BST得到降序打印元素
- 从列表中打印元素
- 如何在矢量 c++ 中打印元素