如何创建具有可变数量元素的全局数组?

时间:2010-06-30 05:17:20

标签: c++ arrays

是否可以声明结构的全局数组,并动态添加元素?

感谢。

5 个答案:

答案 0 :(得分:4)

如果要动态添加元素,可以考虑使用list。您可以创建全局列表,并根据需要动态添加元素。如果您确实需要数组类型功能,vector可能更适合您的速度。在这种情况下,STL很可能提供您所需要的。

值得注意的是,全局变量并不总是一个好主意。如果你经常使用全局变量,你可能需要考虑重构代码,这样就不需要了。许多人认为全局变量是code smell

答案 1 :(得分:3)

避免将非POD用作全局变量。但是,您可以这样做:

std::vector<YourStruct>& global_list()
{
    static std::vector<YourStruct> v;
    return v;
}

这至少通过强制执行初始化访问的策略来避免全局初始化顺序问题。否则你很容易徘徊在未定义的行为之地。

对于要使用的可变大小的容器,如果没有更多的上下文信息,很难说清楚。例如,您是否需要能够快速搜索列表中的元素?你会经常从列表中间删除元素吗?您需要随机访问,还是顺序迭代?等等。

答案 2 :(得分:1)

请参阅std::vector

每当你想要使用数组时,你可能最好使用向量,列表或许多其他STL容器之一。

答案 3 :(得分:0)

不,不是直接的。但是你可以使用STL或自制的矢量。

答案 4 :(得分:0)

您可以使用STL容器。或者,您可以声明您的类型并自行分配/释放内存。但你不应该使用第二种方式。