gam*_*n67 4 c++ vector std-pair
我有这样的对向量 {{label,probability},{label,probability}}。我想得到具有最大概率值的对。这是我尝试实现的目标,但不是获取概率的最大值,而是返回标签字符串的最大值。例如,由于字母顺序,标签狗是最大值。
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
int main()
{
std::vector<std::pair<std::string, float>> pairs;
pairs = {{"apple",34.785}, {"banana",67.8467}, {"dog", 13.476}, {"cat",56.486}};
const auto p = max_element(pairs.begin(), pairs.end());
auto label = p->first;
auto prob = p->second;
std::cout<<label<<" "<<prob;
}
Run Code Online (Sandbox Code Playgroud)
输出 : dog 13.476
您需要提供一个定制的比较器max_element,例如
max_element(pairs.begin(),
pairs.end(),
[](const auto& lhs, const auto& rhs) { return lhs.second < rhs.second; });
Run Code Online (Sandbox Code Playgroud)
否则,std::max_element将使用operator<ofstd::pair作为比较器,它将检查 的两个元素std::pair。
注意:适用于 C++14 及更高版本
| 归档时间: |
|
| 查看次数: |
2805 次 |
| 最近记录: |