我有一个数值向量和一个由0和1组成的掩码向量。例如:
std::vector<int> mask{0, 0, 1, 0, 1, 1, 0};
std::vector<double> vec{7.1, 1.0, 3.2, 2.0, 1.8, 5.0, 0.0};
我需要在vec
中找到最小的元素的索引,但只有在mask
为1时才进行查找。在这个例子中,索引为4的元素是1.8。
这是我使用循环的解决方案。
double minVal = std::numeric_limits<double>::max();
int minIndex;
for (size_t i = 0; i < vec.size(); ++i)
{
if (vec[i] < minVal && mask[i] == 1)
{
minVal = vec[i];
minIndex = i;
}
}
但我想知道是否有一种方法可以使用标准库(例如std::min_element
和lambda表达式)来完成,最好不要使用for循环?