anancds / document

MIT License
1 stars 0 forks source link

make_tuple和tie的区别 #138

Open anancds opened 3 years ago

anancds commented 3 years ago

std::make_tuple() 以及 std::tie() 均可以构造一个 tuple,两者的区别在于前者构造复制,后者创建引用,更准确的说法是后者创建一个左值引用;

anancds commented 3 years ago

std::get() 会解包出来固定位置的值,其返回值是元组内部值的引用;

anancds commented 3 years ago

std::tie() 会解包出来该元组的所有值,不需要的位置可以用占位符 std::ignore 代替,解包数据的数据类型是基本类型而非引用类型;

anancds commented 3 years ago

C++17 引入的 structured binding 方法 auto [_1, _2, _3, ...] 在解包时的表现与 std::tie() 类似。