【发布时间】:2018-07-17 01:57:12
【问题描述】:
试图就地调整我的阵列。但似乎它不起作用。在数组上运行函数后,值保持不变。
void filter_scan(std::array<float, 270>& scan){
for(float val : scan){
if(val < 0.5 || val > 2)
val = 0;
}
}
【问题讨论】:
试图就地调整我的阵列。但似乎它不起作用。在数组上运行函数后,值保持不变。
void filter_scan(std::array<float, 270>& scan){
for(float val : scan){
if(val < 0.5 || val > 2)
val = 0;
}
}
【问题讨论】:
即使您通过引用传递数组,您也可以通过值(复制)访问每个元素。
for(float val : scan)
将数组的每个元素复制到val 中,您对其进行的任何修改都不会显示在数组中。您需要将val 设为类似
for(float& val : scan)
【讨论】:
您正在按值访问数组条目。为每个条目创建一个本地副本val,然后更改,只是再次被遗忘。要获得“读写”类型的访问权限,您可以按引用扫描数组:
void filter_scan(std::array<float, 270>& scan){
for(float& val : scan) { // Notice the "&"!
if(val < 0.5 || val > 2)
val = 0;
}
}
【讨论】:
您需要添加参考:
void filter_scan(std::array<float, 270>& scan){
for(float &val : scan){
if(val < 0.5 || val > 2)
val = 0;
}
}
【讨论】: