@[TOC]自定义STL容器中存放不同类型实现方法
以vector容器为例,定义好只存int类型,其它类型将无法存入。
vector容器放入同一类型C++
vector<int> vecint;
vecint.push_back(10);
vecint.push_back('s'); //错误,只能放入int类型
容器里有没有办法可以存不同类型呢?
面讲个我想到的一个方法,估计还有很多方法。
先定义一个结构AnyData,结构中定义状态Eflag(用于判断是存的是什么类型)和union(里面存数据)。
结构AnyData定义构造函数,为每种类型定义一个。
getType()用于获取当前数据类型。
getVal()重载函数用于获取实际数据值。
用stl vector容器为例,实现存放不同类型完整代码:
#include <iostream>
#include <vector>
using namespace std;
enum EType{
E_bool, E_char, E_short, E_int, E_long,
E_float, E_double};
struct AnyData
{
EType Eflag;
union {
bool bVal;
char cVal;
short sval;
int ival;
long lval;
float fval;
double dval;
};
AnyData(bool val){
Eflag = E_bool;
bVal = val;
}
AnyData(char val){
Eflag = E_char;
cVal