Vector Object Inventory,可以存储其他Object类型的对象?

时间:2014-06-04 23:35:24

标签: c++ object vector

我正在尝试创建一个可以容纳任何对象的库存系统

例如

struct Ore{
    string name;
    int Size;
};

struct Wood{
    string name;
    int size;
    int color;
};

我的想法是创建一个包含2个向量的结构,一个用于数字数字,如带有Attack,Deffense和stuff的项目,另一个用于Name,description或其他文本。 具有针对不同项类型的多个构造函数。

我遇到的问题是我听说过矢量会占用更多内存,我希望这个程序可以创建数百或数千个项目。

所以我正在寻找有关内存存储的任何建议。

 struct Invetory{
 vector<float> Number;
 vector<string> Word;

   Invetory(string n,float a) 
   {Word.push_back(s); Number.push_back(a)}

   Invetory(string n,float a, float b)
   {Word.push_back(s); Number.push_back(a); Number.push_back(b);}
 };

 vector<Invetory>Bag_Space;

1 个答案:

答案 0 :(得分:1)

您正在尝试过早优化。

选择最干净利落的东西。 vector不是一个疯狂的选择。 (Using arrays or std::vectors in C++, what's the performance gap?

如果/何时出现,请处理性能问题。

查看以下关于过早优化的讨论。


BTW我偶然发现了this interesting discussion on potential performance issues with vectors。总之,它说如果你的向量正在缩小,那么除非你调用swap函数,否则内存占用量不会随着向量大小而缩小。 如果你制作了很多向量而不需要将它的元素初始化为0,那么而不是

vector<int> bigarray(N);

vector<int> bigarray;
bigarray.reserve(N);