gpt4 book ai didi

c++ - 反向映射一个函数关系(c++)

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:17 26 4
gpt4 key购买 nike

我正在使用一个简单的函数 (y(x)),我想从某个 y 值生成一个 x 值。虽然通常反向映射不会给出单个 x 值,但我使用的是 y 值中的最大值。这意味着我输入的 y 值(最大值)将有一个唯一的 x 值。我不明白如何用 C++ 编写此代码

最佳答案

如果你不需要插值,只需要精确的反向查找,那么它相对简单:

std::map<YType, XType> lookup;
// (code to read the file goes here)
// for each x {
YType y = f(x);
if ((lookup.count(y) == 0) || (lookup[y] < x)) {
lookup[y] = x;
}
// }

那么你的反向查找就是 lookup[y],如果 y 实际上从数据。

请注意,我的代码效率有点低,它在映射中多次查找 y,最多 3 次。您可以使用迭代器进行优化,但我担心这会掩盖正在发生的事情如果您还不熟悉它们:

typedef std::map<YType, XType> maptype;
typedef std::pair<maptype::iterator, bool> resulttype;

resulttype result = lookup.insert(std::make_pair(y, x));
if (!result.second) {
// key already existed, so value was not inserted. Check for max.
maptype::iterator pos = result.first;
if ((*pos).second < x) {
(*pos).second = x;
}
}

关于c++ - 反向映射一个函数关系(c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6362043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com