小编orb*_*bit的帖子

查找“掩码向量”的最小元素的位置

我有一个由一些值组成的向量以及一个由 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};
Run Code Online (Sandbox Code Playgroud)

我需要在其中找到最小元素(其索引)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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种方法可以通过使用标准库(例如std::min_element和 lambda)来做到这一点,最好不使用 for 循环?

c++ vector

3
推荐指数
1
解决办法
291
查看次数

标签 统计

c++ ×1

vector ×1