C++ 如何找到三者之间的最小值(for循环)?
我需要找到sonarRange[I]、sonarRange2[I]和sonarRange3[I]的最小值。前面三个数组中的每一个都在一个单独的(for循环)中,如代码所示 我使用If语句来计算最小值。它可以工作,但我写了很多代码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
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());
}