我有一个 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/