std::vector<std::any> values; values.push_back(std::any{3}); values.push_back(std::any{5...
std::unique_ptr不能用作std::any,因为后者要求值类型是可复制构造的,而std::unique_ptr不是。根据...
std::vector<std::any> v; v.push_back(42); std::string s = "hello"; v.push_back(s); for (const auto& a : v){ if (a.type() == typeid(std::string)) { std::cout << "string: " << std::any_cast<const std::string&>(a) << '\n'; } else if (a.type() == type...
std::any 特别适合在容器中存储多种类型的值。例如,我们可以创建一个 std::vector<std::any> 来存储不同类型的元素。#include <any>#include <vector>#include <iostream>#include <string>int main() { std::vector<std::any> vec = {42, std::string("Hello"), 3.14, true}; for (const...
如函数需要可以接受任意类型的参数,或者在一个容器中存储各种类型的对象,以往可以通过指针和模板来解决,但是这些方法存在代码冗长、可读性差等问题。而 C++17 引入的 std::any 类模板则提供了一种更加优雅和方便的解决方案。如下示例代码展示了在vector中存储不同类型的值。
std::any: How, when, and why:https://devblogs.microsoft.com/cppblog/stdany-how-when-and-why/ 1.简介 1.1 为什么不用void* ? structday{ // ...things... void* user_data; }; structmonth{ std::vector<day> days; void* user_data; ...
例如,我们可以创建一个std::vector<std::any>来存储不同类型的元素。 复制 #include<any>#include<vector>#include<iostream>#include<string>intmain(){std::vector<std::any>vec={42,std::string("Hello"),3.14,true};for(constauto&item:vec){// 使用类型检查和any_cast访问元素if(item.type()==type...
正如注释所指出的那样,您不能直接使用std::any来做任何事情,您可以只保留它们。
刚接触 C++17 的时候我以为std::any是个什么高大上的黑魔法,然后发现好像没啥实际用处,而且性能差得...
std::vector<std::any> v; v.push_back(42); std::string s ="hello"; v.push_back(s);for(constauto& a : v) {if(a.type() ==typeid(std::string)) { std::cout <<"string: "<< std::any_cast<conststd::string&>(a) <<'\n'; ...