c++ - 在成对 vector 中,找到第一个值等于 X 的对并返回第二个值,或者返回 Y

标签 c++

我有一个 vector 对,例如

std::vector< std::pair <int, double> > vec = { {1, 2.0}, {5, 21.0} };

我想检查这个 vector 是否有一对,其中第一个元素等于 5。如果是这样,那么我想返回该对的第二个元素 21.0。如果不是,则返回 99.9。

我知道我可以使用 std:find 和 family,但不确定如何做返回值部分。例如,通过 stackoverflow 搜索,下面似乎是一个近似的解决方案:

#include <vector>
#include <algorithm>

double MyFunc(int key) const {
    if (std::find(vec.begin(), vec.end(), [&key](std::pair<int, double> const& elem) {
                                           return elem.first == key;
                                           }))
           return ???;
    else
           return 99.9;
}

这是可行的解决方案吗?我应该用什么填充 ???;?如您所见,我不是 C++ 等方面的经验丰富的程序员,因此我们不胜感激。

最佳答案

auto it = std::find_if(vec.begin(), vec.end(),
    [&key](const std::pair<int, double>& elem) {
        return elem.first == key;
    });
return it != vec.end() ? it->second : 99.9;

关于c++ - 在成对 vector 中,找到第一个值等于 X 的对并返回第二个值,或者返回 Y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59122419/

相关文章:

c++ - 使用 C++/boost::asio/libcurl 的简单代理 - 无法下载图像

c++ - 将无限无锁缓冲区折叠为循环缓冲区时避免冲突

c++ - 当 GetQueuedCompletionStatus() 返回 FALSE 时,这些参数的值是什么?

c++ - 查询的SQL格式

c++ - 如何将未经预处理的 C/C++ 源代码转换为语法树(并返回)?

c++ - 对 mersenne_twister 的调用比预期的要多

c++ - Code::Blocks 10.05 未定义的函数引用

c++ - 由模板成员函数引起的错误 C2275。这段代码有错吗?

c++ - C++可以设计一种将指针保存在连续内存中并且不会使它们无效的数据结构吗?

c++ - 选择正确的内核大小以进行中值模糊处理以减少噪声