【问题标题】:Can a vector hold different data types in two different occasions?一个向量可以在两种不同的场合下保存不同的数据类型吗?
【发布时间】:2015-11-30 07:03:06
【问题描述】:

我想要一个向量说vector<userdefined> vec 来存储一些值。假设我创建了 A 类的两个对象 B 和 C。

现在我希望对象 B 在我的向量“vec”中保存整数,对象 C 在我的向量“vec”中保存双精度

一个例子来说明这个问题

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

我可以创建一个模板或使用任何重载函数吗?

【问题讨论】:

  • 你想让同一个向量容纳不同的类型?
  • 总之不行,它不能。
  • 是的,理论上可行吗?
  • @TMNT 理论上是不可能的。
  • C++ 的天空是极限,几乎一切皆有可能。唉,你不能以如此直接的方式展示。

标签: c++ vector


【解决方案1】:

忘记“为什么”要这样做,您可以使用联合将ints 或doubles 存储在同一向量中。

#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);
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 2014-03-03
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2017-04-30
    • 2015-12-02
    相关资源
    最近更新 更多