有功能吗?
我想提取索引中最高值的前5个索引。
我只能获取最高值的索引,但是我必须删除它,然后再执行其他方法?

for (unsigned i = 0; i < 5 ; i++){
     int index = std::distance(vMetric.begin(),std::max_element(vMetric.begin(), vMetric.end()));
     vMetric.erase(vMetric.begin()+ index);
}

最佳答案

创建一个索引数组并对它进行部分排序:

std::vector<size_t> indices(vMetric.size());
std::iota(indices.begin(), indices.end(), 0);
std::partial_sort(indices.begin(), indices.begin() + 5, indices.end(),
                  [&](size_t A, size_t B) {
                     return vMetric[A] > vMetric[B];
                  });
indices的前5个元素包含您的答案,并且原始 vector 不会发生突变。

关于c++ - 函数返回 vector 最高值的前5个索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63100524/

10-12 20:41