就地数组更改

时间:2018-02-06 21:53:28

标签: c++ c++11

尝试原地调整我的阵列。但似乎它不起作用。在数组上运行函数后,值保持不变。

void filter_scan(std::array<float, 270>& scan){
  for(float val : scan){
    if(val < 0.5 || val > 2)
      val = 0;
  }
}

3 个答案:

答案 0 :(得分:2)

即使您通过引用传递数组,您也可以按值(复制)访问每个元素。

for(float val : scan)

将数组的每个元素复制到val中,对其执行的任何修改都不会显示在数组中。您需要将val作为

之类的引用
for(float& val : scan)

答案 1 :(得分:2)

您正在按值访问数组条目。为每个条目创建本地副本$("#inputElementId").on("keypress", function(event){ if (event.keyCode == 13) { event.preventDefault(); event.target.blur() } }) ,然后更改,只是再次被遗忘。要获得“读写”类型的访问权限,您可以通过引用扫描数组

val

答案 2 :(得分:1)

您需要添加引用:

void filter_scan(std::array<float, 270>& scan){
  for(float &val : scan){
    if(val < 0.5 || val > 2)
      val = 0;
  }
}