gpt4 book ai didi

c++ - `auto` 和 `std::any` 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 06:51:12 27 4
gpt4 key购买 nike

我最近遇到了std::any类,在 C++17 中引入,基于 boost::any .此类可以“保存任何类型的实例”和 auto自动推断变量的数据类型。
那么主要区别是什么?优缺点都有什么?

最佳答案

std::anyauto是完全不同的构造。
std::any是一种容器类型,可以容纳任何类型的对象:

std::any a = 42;        // a holds an int, but type is std::any
a = std::string{"hi"}; // ok, a holds a string now
std::any持有的对象类型可以在程序执行过程中改变。
auto是指定占位符类型的关键字。 auto 的变量类型是用于初始化变量的值的类型:
auto a = 42;            // a is int, for the entirety of the program
a = std::string{"hi"}; // error, a has type int
这种类型是静态确定的,即在编译时,并且在程序执行期间永远不会改变。

这些构造不可互换,因此它们具有不同的用例,您无法有意义地比较一种与另一种的优缺点。

关于c++ - `auto` 和 `std::any` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64431350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com