结构化绑定:遍历元组的双端面

Structured Bindings : loop over deque of tuple

本文关键字:元组 绑定 遍历 结构化      更新时间:2023-10-16

我刚刚安装了Visual Studio的最新版本,我有这个元组:

using InstancesOfOneObject = std::tuple<DrawCmd, std::deque<bool>, std::deque<glm::mat4>>;
std::deque<InstancesOfOneObject> mInstancesByObject;

之后,我想用一个 for 远程循环遍历这个双端

for (const auto &[cmd, validites, matrices] : mInstancesByObject)

但是,这不起作用,但是:

for (const auto &instance : mInstancesByObject) {
const auto &[cmd, validities, matrices] = instance;

效果很好。

正常吗?有没有办法使用接近第一个想法的东西?

两者之间的唯一区别:

for (const auto &[cmd, validites, matrices] : mInstancesByObject) { ... }

和:

for (const auto &instance : mInstancesByObject) {
const auto &[cmd, validities, matrices] = instance;
...
}

是后者允许您仍然访问instance而在前者中它是一个未命名的对象。它们在其他方面是等效的。如果前者无法编译,则应向该编译器提交错误。