本文共 2892 字,大约阅读时间需要 9 分钟。
这个系列是从开始的,主要是复现Jason Turner的“C++ Weekly With Jason Turner”视频中的代码。
024 Structured bindings
Jason在这期里简单介绍了structured binding在C++17中的运用,挺有意思。其实我在想,要是structured binding可以忽略一些变量就好了,就像是Python里的下划线“_”的作用。目前可以通过std::tie
和std::ignore
来实现类似的功能,但是要预先定义变量。
Structured bindings除了用在std::pair
和std::tuple
上之外,用在普通的array和std::array
上也是可以的。
Jason同时演示了structured binding可以用在struct的成员变量上。但是当struct/class具有继承关系时,structured bindings就基本失效了。当一个class具有私有成员变量时也不行。可以看的讨论。
最后需要指出的是,在使用structured bindings时,注意auto
和auto&
的差别。
#include #include #include
上述代码的执行结果如下
Hello, StructuredBinding! m["v0"] = 0m["v0"] = 1Test with plain array and std::array. Test structured binding with structs and classes. a = 0b = 1.1c = 2.2d = dobjC.a = 0objC.a = -2
转载地址:http://diugf.baihongyu.com/