Кажется, вы хотите использовать связку float
s в качестве ключа на карте.
Вы можете сделать это, обернув их как tuple
или определитьболее значимый struct
тип:
#include <map>
struct MyKey {
float d0, d1, d2, a0, b0, a1, b1, a2, b2;
bool operator < (const MyKey& o) const {
return std::tie(d0, d1, d2, a0, b0, a1, b1, a2, b2) < std::tie(o.d0, o.d1, o.d2, o.a0, o.b0, o.a1, o.b1, o.a2, o.b2);
}
};
struct MyValue {
float p0, p1, p2;
};
std::map<MyKey, MyValue> pobj;
Чтобы вставить в эту карту:
pobj.insert({{d0, d1, d2, a0, b0, a1, b1, a2, b2}, {p0, p1, p2}});
Не уверен, однако, что вы будете делать с такой картой.Поиск по поплавкам, вероятно, не удастся.Но поиск подпространства, например, lower_bound
, все еще может быть полезен.
auto it = pobj.lower_bound({d0, d1, d2, a0, b0, a1, b1, a2, b2});
if (it != end(pobj)) {
const MyKey& key = it->first;
const MyValue& value = it->second;
std::cout << "found: " << value.p0 << " " << value.p1 << " " << value.p2 << std::endl;
}