我需要在C++中存储一个动态创建的特定基类型对象的列表/集合/数组(我是C++的新手).在C#中我会使用泛型集合,我在C++中使用什么?
我知道我可以使用数组:
SomeBase* _anArrayOfBase = new SomeBase[max];
Run Code Online (Sandbox Code Playgroud)
但是我没有得到任何"免费"的东西 - 换句话说,我不能迭代它,它不会自动扩展等等.
那么还有其他选择吗?
谢谢
Yac*_*oby 17
有std :: vector是数组的包装器,但它可以扩展并自动完成.但是,这是一项非常昂贵的操作,因此如果您要进行大量的插入或删除操作,请不要使用矢量.(您可以使用保留功能,预留一定的空间)
std :: list是一个链表,它具有更快的插入和删除时间,但迭代速度较慢,因为值没有存储在连续的内存中,这意味着地址计算要复杂得多,你无法利用处理器在迭代列表时缓存.
与向量或双端队列相比的主要优点是可以相当便宜地从列表中的任何位置添加或删除元素.
作为妥协,有std :: deque,它外部以与矢量类似的方式工作,但在内部它们是非常不同的.deque的存储不必是连续的,因此它可以分成块,这意味着当deque增长时,它不必为其整个内容重新分配存储空间.访问速度稍慢,您无法使用指针算法来获取元素.
你应该使用矢量.
#include <vector>
int main()
{
std::vector<SomeBase*> baseVector;
baseVector.push_back(new SomeBase());
}
Run Code Online (Sandbox Code Playgroud)
C++包含STL中的一组数据容器.检查它在这里.