C++ 如何找到三者之间的最小值(for循环)?

C++ 如何找到三者之间的最小值(for循环)?,c++,c++11,visual-c++,C++,C++11,Visual C++,我需要找到sonarRange[I]、sonarRange2[I]和sonarRange3[I]的最小值。前面三个数组中的每一个都在一个单独的(for循环)中,如代码所示 我使用If语句来计算最小值。它可以工作,但我写了很多代码 for (int i = 0; i < 8; i++) { sonarSensor[i] = robot.getSonarReading(i); sonarRange[i] = sonarSensor[i]->getR

我需要找到sonarRange[I]、sonarRange2[I]和sonarRange3[I]的最小值。前面三个数组中的每一个都在一个单独的(for循环)中,如代码所示

我使用If语句来计算最小值。它可以工作,但我写了很多代码

    for (int i = 0; i < 8; i++) {
        sonarSensor[i] = robot.getSonarReading(i);
        sonarRange[i] = sonarSensor[i]->getRange();

    }
    for (int i = 0; i < 8; i++) {
        sonarSensor[i] = robot.getSonarReading(i);
        sonarRange2[i] = sonarSensor[i]->getRange();

    }

    for (int i = 0; i < 8; i++) {
        sonarSensor[i] = robot.getSonarReading(i);
        sonarRange3[i] = sonarSensor[i]->getRange();

    }
for(int i=0;i<8;i++){
声纳传感器[i]=机器人获取声纳读数(i);
声纳范围[i]=声纳传感器[i]>getRange();
}
对于(int i=0;i<8;i++){
声纳传感器[i]=机器人获取声纳读数(i);
sonarRange2[i]=sonarSensor[i]>getRange();
}
对于(int i=0;i<8;i++){
声纳传感器[i]=机器人获取声纳读数(i);
sonarRange3[i]=sonarSensor[i]>getRange();
}
您应该使用查找每个数组的最小元素,然后使用查找三个值中的最小值

我想找到每个索引的三个数组中的最小值

按照Remy Lebeau的建议,将它们放入数组中并使用:

(大小i=0;i<8;++i)的
{
阵列x{sonarRange[i],sonarRange2[i],sonarRange3[i]};
int min=*std::min_元素(x.begin(),x.end());
}

如果有3个普通数组,每个数组中有8个元素,这就足够了:

#include <algorithm>
#include <iostream>

using range_type = double; // change to the type you are using

int main() {
    range_type sonarRange[8];
    range_type sonarRange2[8];
    range_type sonarRange3[8];

    // fill sonarRanges

    // find and store the minimum at each index
    range_type result[8];

    for(size_t i = 0; i < 8; ++i) {
        result[i] = std::min({sonarRange[i], sonarRange2[i], sonarRange3[i]});
    }
}

然后使用
my_min({sonarRange[i]、sonarRange2[i]、sonarRange3[i]})
而不是上面的
std::min

您的代码没有计算任何最小值。。。不管怎样,我认为您正在寻找将3个值放入一个数组中,然后使用查找该数组中的最小值您是要查找每个数组中的最小值,还是要查找每个索引的三个数组中的最小值?顺便说一句,如果您的问题是关于代码,那么最好显示代码,你发布的部分只与问题有一点关系。另请参见:顺便说一句,如果您发现自己命名变量
foo1
foo2
foo3
,很可能您更想要一个名为
foo
向量。问题不太清楚,但在注释中,OP想要的是其他东西
#include <algorithm>
#include <iostream>

using range_type = double; // change to the type you are using

int main() {
    range_type sonarRange[8];
    range_type sonarRange2[8];
    range_type sonarRange3[8];

    // fill sonarRanges

    // find and store the minimum at each index
    range_type result[8];

    for(size_t i = 0; i < 8; ++i) {
        result[i] = std::min({sonarRange[i], sonarRange2[i], sonarRange3[i]});
    }
}
<initializer_list>
template<class T>
T my_min(std::initializer_list<T> ilist)
{
    return *std::min_element(ilist.begin(), ilist.end());
}