【发布时间】:2019-01-30 12:43:14
【问题描述】:
我有一个std::tuple,例如
std::tuple<uint16_t, uint16_t, uint32_t> key{};
std::tuple<uint16_t, uint16_t, uint32_t> key2{};
const auto [k, p, r] = key;
我想与第二个元组进行比较,但只与前两个参数进行比较。类似的东西:
if(std::tie(k, p, std::ignore) < std::tie(key)) { ... }
如果我这样做,我会收到以下错误:
error C2338: cannot compare tuples of different sizes
我该怎么做?
EDIT1:
两个元组的大小相同。我看到两个在 EQUAlITY 上与std::tie() 的比较,但我可以写得更好:
if(std::tie(k, p, std::ignore) == std::tie(key)) { ... }
EDIT2:
如果我想要这个怎么办:
if(std::tie(k, std::ignore, p) == std::tie(key)) { ... }
【问题讨论】:
-
我想这个回答了你的问题stackoverflow.com/questions/35563209/…
-
不,我的元组大小相同。
-
只需更改
tuple_compare并使用您将提供的参数而不是使用sizeof ...看起来应该可以工作 -
std::tie(key),key已经是一个元组...