WordPress建站软件下载站网站开发技术的背景是什么?

摘要:wordpress建设软件下载站,网站开发技术的背景,wordpress 插件配置文件,外贸网站制作教程一、std::tuple和std::pair 在传统的C里一直有一个问题让开发者不爽,就是无法返回多个值。
wordpress建设软件下载站,网站开发技术的背景,wordpress 插件配置文件,外贸网站制作教程一、std::tuple和std::pair 在传统的C里一直有一个问题让开发者不爽#xff0c;就是无法返回多个值。一般来说#xff0c;返回多个都建议采用封装的模式#xff0c;比如弄一个结构体或者类啥的。这样做一定时没有问题的#xff0c;但对于一些只返回一些简单值并且只在偶尔…一、std::tuple和std::pair 在传统的C里一直有一个问题让开发者不爽就是无法返回多个值。一般来说返回多个都建议采用封装的模式比如弄一个结构体或者类啥的。这样做一定时没有问题的但对于一些只返回一些简单值并且只在偶尔情况下使用的时候儿封装一个结构体之类的有点用力过猛的意思。 所以在后来出现了std::pair它其实就是一个类似于封装的一个结体可简化如下 templatetypename T1,typename T2 struct pair {T1 first;T2 second; };这样一来就可以在一些需要返回多个值的情况下使用此数据结构。但是这也只是简化了使用而并没有达到其它语言的多值返回开发者也只能接受。但随着std::tuple的出现使得std::pair变得有点鸡肋的味道。毕竟这个数据结构虽然说有点方便但还是有点不方便比如传三个或者更多的参数更让人不好理解的是泛型的T很难描述first和second的关系这对于具体到某个公司或者说某个程序来说不算什么大问题但用在标准库里可是真得有点问题。 这两个问题的存在后者在C20中进行了完善使用了具名的数据结构体而前者则是出现了std::tuple。相比std::pair它可以更多的处理异类的参数当然同类更没问题不过它的访问方式相比std::pair有了一些小小的不方便。只能使用类型或索引“std::get(stuTuple) or std::get0(stuTuple)”。不过在C17还提供了聚合初始化访问的方式类似下面的代码 auto [a,b,c,d] getTuple(); std::coutabcdstd::endl; 它等于是简化了使用std::tie来处理这种情况这样做的好处就不言而喻了。 为了鼓励开发者从std::pair转到std::tuple(std::tuple的应用还真是不多)STL提供了从pairT,U到 tupleT,U的隐式转换但反之则不行。这也算是一种诱导法则吧。 二、类tuple类型及处理 在结构化绑定中理论上讲只要成员是公有的都可以直接进行处理。类似于下面的代码 struct Data{...}; Data d{...}; auto [a,b,c] d; 在C17中提供了一个std::is_aggregate元编程的接口来判断是否一个可聚合初始化的类型。但是对于一些自定义的非聚合类型呢这块也有办法。
阅读全文