向量对象库,可以存储其他对象类型的对象



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

例如

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

我的想法是创建一个具有2个向量的结构体,一个用于数字数字,如具有攻击,防御和东西的项目,另一个用于名称,描述或其他文本的向量。为不同的项类型使用多个构造函数。

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

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

 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;

你尝试优化得太早了。

用最干净的东西。vector不是一个疯狂的选择。(在c++中使用数组或std::vector,性能差距是多少?)

处理出现的性能问题。

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

  • 何时优化过早?

  • https://softwareengineering.stackexchange.com/questions/80084/is-premature-optimization-really-the-root-of-all-evil

顺便说一句,我偶然发现了这个关于向量潜在性能问题的有趣讨论。总之,如果您的向量正在缩小,那么内存占用不会随着向量大小而缩小,除非您调用swap函数。如果你要创建很多向量并且不需要将元素初始化为0,那么不用

vector<int> bigarray(N);

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

最新更新