结构化绑定已经在c++17中引入。 它们允许从元组或结构体声明多个初始化变量。
这段代码可使用编译器进行编译。
#include <iostream>
#include <tuple>
int main() {
auto tuple = std::make_tuple(1.0, 1);
auto [ d, i ] = tuple;
std::cout << "d=" << d << " i=" << i << '\n';
return 0;
}
如果我没有使用auto
来声明变量,我会得到以下错误:
错误:预期lambda表达式的主体 [d2, i2] = tuple;
#include <iostream>
#include <tuple>
int main() {
auto tuple = std::make_tuple(1.0, 2);
double d2;
int i2;
[d2 , i2] = tuple;
return 0;
}
我使用的是clang version 4.0.0
和编译选项-std=c++1z
。
我可以将现有变量分配给结构化绑定吗?我需要使用auto
吗?
std::tie
)。 - Some programmer dude