哈哈哈,这个std::any真不错
#include <iostream>
#include <map>
#include <any>
#include <vector>
using namespace std;
int main() {
map<string, std::any> attrs;
attrs["Num"] = std::make_any<uint64_t>(1);
attrs["Str"] = std::make_any<string>("LingMo");
attrs["Vec"] = std::make_any<std::vector<int>>({ 1, 2, 4 ,5, 6, 7, 8 ,9 });
string a1 = "Hello";
string a2 = "World";
attrs["Vec2"] = std::make_any<std::vector<string>>({ a1, a2, string("Why") });
uint64_t num = std::any_cast<uint64_t>(attrs["Num"]);
string str = std::any_cast<string>(attrs["Str"]);
std::vector<int> vec = std::any_cast<std::vector<int>>(attrs["Vec"]);
std::vector<string> vec2 = std::any_cast<std::vector<string>>(attrs["Vec2"]);
return 0;
}
constexpr size_t operator ""_KB(unsigned long long kbs)
{
return 1024LLU * kbs;
}
constexpr size_t operator ""_MB(unsigned long long mbs)
{
return 1024LLU * 1024LLU * mbs;
}
constexpr size_t operator ""_GB(unsigned long long gbs)
{
return 1024LLU * 1024LLU * 1024LLU * gbs;
}