是否可以声明结构的全局数组,并动态添加元素?
感谢。
答案 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容器。或者,您可以声明您的类型并自行分配/释放内存。但你不应该使用第二种方式。