如何实现数据结构,就像C 中的数组一样支持不同的类型元素
How can I implement a data structure support different types element just like an array in C++?
就像数组一样,该数据结构支持返回o(1)乘以某些索引的元素。不同类型表示内置类型和用户定义的类,该类别应使用参考。p>例如,A是使该结构降低的类。B,C是不同类的实例。A应该支持遵循以下操作:
A a(10);//apply for storage of 10 elements
a[0]=120;
a[1]=’a’;
a[2]=”adsad”;
a[3]=b;
a[3]=c;
a[1]=c;
a[2]=123.5;
…
这个问题不是用于实际用途,仅是出于好奇心。
现在我知道如何解决这个问题。真的很酷:D
您可以使用std::vector
或std::any
的std::array
进行此操作。
喜欢以下内容:
std::vector<std::any> many_any(10);
many_any[0] = 120;
many_any[1] = 'a';
many_any[2] = std::string("adsad");
many_any[3] = 123.5;
std::cout << std::any_cast<int>(many_any[0]) << std::endl;
std::cout << std::any_cast<char>(many_any[1]) << std::endl;
std::cout << std::any_cast<std::string>(many_any[2]) << std::endl;
std::cout << std::any_cast<double>(many_any[3]) << std::endl;
此代码输出:
120
a
adsad
123.5
这是一个实例。
std::any
是一个异质容器,使用类型搜索来存储任何类型。它是C 17标准的一部分。这是一系列文章,解释了如何在c 中实现类型的文章:类型擦除 - 第一部分
重要说明:如果您确实需要std::any
,则应非常仔细地考虑。因为它更像是"是的,我们可以!" 功能,这在纯形形式中很少有用。其他选项包括将对象存储在多态性设置中:使用接口(也可以使用Type-erasure也可以实现)或变体 访问者。
更新:如果您的编译器不支持C 17,您可以查看Boost的任何实现。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 在C 中,可以用语法[i,j,..]实现访问数组元素的功能,而语法就像numpy中的ndarray样式一样
- 如何实现数据结构,就像C 中的数组一样支持不同的类型元素
- 将单个对象像一个带有一个元素的数组一样对待,采用一端指针
- C++:元素和值这两个术语的意思是一样的吗
- 函数来像访问向量一样访问向量中结构的元素
- 为什么队列的所有元素都是一样的,元素被添加到 posix 线程中的队列中
- 那么,是否可以像使用指针一样使用迭代器访问二维向量中的所有元素呢?
- 对结构元素的访问.有没有可能像矢量一样访问
- 为什么当我向一个向量中添加元素时,它的大小是一样的?
- 像访问数组一样访问c++队列元素