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

标签 c++ object vector

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

例如

struct Ore{
    string name;
    int Size;
};

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

我的想法是创建一个包含 2 个 vector 的结构,一个用于数字,例如具有攻击、防御和内容的项目,另一个 vector 用于名称、描述或其他文本。 具有针对不同项目类型的多个构造函数。

我遇到的问题是我听说 vector 会占用更多内存,我希望这个程序能够创建成百上千个项目。

所以我一直在寻找关于更好的内存存储的任何建议。

 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 不是一个疯狂的选择。 ( Using arrays or std::vectors in C++, what's the performance gap? )

在性能问题出现时处理它。

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


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

vector<int> bigarray(N);

尝试

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

关于c++ - Vector Object Inventory,可以存储其他对象类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24049328/

相关文章:

c++ - std::bad_cast vs NULL,有什么区别?

javascript - 我可以通过访问该对象中的其他值来设置该对象的值吗?

javascript - react : function comes back as undefined

javascript - 在 Javascript 中遍历字典

c++ - 以老式(和肮脏的)方式填充 vector<char>

c++ - 被复制到 vector 中的对象被清除,因为原始预复制已被清除()

c++ - 从运行多次的循环中获取输入 C++

c++返回函数类型通过nlohmann json.hpp返回json数组

c++ - 虚方法,operator=(), operator<<();

performance - 最长公共(public)子序列算法调试性能瓶颈