矢量可以在两个不同的场合保存不同的数据类型吗?

时间:2015-11-29 22:43:03

标签: c++ vector

我希望单个向量说vector<userdefined> vec来存储一些值。假设我已经创建了A类的两个对象B和C.

现在我希望对象B在我的矢量“vec”和对象C中保持整数在我的矢量“vec”中保持双重

举例说明这个问题

B.vec.pushback(int);
C.vec.pushback(double);

我可以创建模板或使用任何重载功能来执行此操作吗?

1 个答案:

答案 0 :(得分:1)

忘记&#34;为什么&#34;如果您想这样做,可以使用工会将intdouble存储在同一个向量中。

#include <vector>

union userdefined
{
    int i;
    double d;
    userdefined(int p) : i(p) {}
    userdefined(double p) : d(p) {}
};


struct C
{
    std::vector<userdefined> vec;
};

int main()
{
    int i = 0;
    double d = 0.0;
    C A;
    C B;
    A.vec.emplace_back(i);
    B.vec.emplace_back(d);
}

我不建议这样做。您应该尝试找到一种不需要在同一数据结构中存储两种类型的解决方案。访问非活动的工会成员太容易了。