#include <iostream>
#include <any>//c++17 much like variant.
// how to store any kind of data in a single variable.
// std::variant requires you to list out all of those types is good that's what makes it type safe!
// for small types std::any works exactly the same way as std::variant, however if you have a large type
// that's where it actually takes you into the void pointer -> big storage(check out the source code of any),
// std::any will dynamically allocate memory for large types.
// Dynamically allocating memory is not good for the performance, so sum up use std::any or std::variant
// to deal with small types like int float vector class they are gonna work in exactly the same way.
// std::any is sth you should be aware of but maybe not sth you should use all that often.
struct CustomClass
{
std::string s0, s1;
};
int main(void)
{
std::any data;
data = NULL;
data = 5.5f;
data = "I am Groot";
data = 2;
data = std::string("Groot");
std::string& string = std::any_cast<std::string&>(data);//data -> string
data = CustomClass();//std::any will allocate if it needs to(if the data is above 32 bytes.)
std::cin.get();
}
【Cherno的C++视频】How to store any data in C++
最新推荐文章于 2024-10-18 22:48:33 发布