Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何创建元素数量可变的全局数组?_C++_Arrays - Fatal编程技术网

C++ 如何创建元素数量可变的全局数组?

C++ 如何创建元素数量可变的全局数组?,c++,arrays,C++,Arrays,是否可以声明结构的全局数组,并向其中动态添加元素 谢谢。不,不直接。但您可以使用STL或自制向量。请参阅 P>任何时候你想使用数组,你最好使用向量、列表或许多其他STL容器中的一个。 如果你想动态地添加元素到某个东西,你可以考虑使用A。您可以创建一个全局列表,并根据需要动态地向其中添加元素。如果您真的需要阵列类型的功能,a可能更适合您的速度。在这种情况下,STL可能会提供您所需要的 还值得注意的是,globals并不总是一个好主意。如果您大量使用全局变量,您可能需要考虑重构代码,这样就没有必要

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


谢谢。

不,不直接。但您可以使用STL或自制向量。

请参阅


<> P>任何时候你想使用数组,你最好使用向量、列表或许多其他STL容器中的一个。

如果你想动态地添加元素到某个东西,你可以考虑使用A。您可以创建一个全局列表,并根据需要动态地向其中添加元素。如果您真的需要阵列类型的功能,a可能更适合您的速度。在这种情况下,STL可能会提供您所需要的


还值得注意的是,globals并不总是一个好主意。如果您大量使用全局变量,您可能需要考虑重构代码,这样就没有必要了。许多人认为全局变量是一个. 您可以使用STL容器。或者,您可以自己声明类型并分配/释放内存。但是你不应该使用第二种方法。

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

std::vector<YourStruct>& global_list()
{
    static std::vector<YourStruct> v;
    return v;
}
std::vector&global_list()
{
静态std::向量v;
返回v;
}
这至少避免了全局初始化顺序问题,因为它强制了一个策略,其中访问是初始化。否则,您将很容易陷入未定义的行为领域


至于使用什么可变大小的容器,如果没有更多的上下文信息,很难判断。例如,您是否需要能够快速搜索列表中的元素?您是否经常从列表中间删除元素?您需要随机访问,还是顺序迭代可以?是的,正如其他人所说的,<代码> STD::向量< /代码>是C++对于可变长度数组所具有的。然而,全局变量是不受欢迎的,这是有充分理由的。为什么你想让它成为一个全局的?看看“全局”和“具有可变内容”是完全正交的概念。列表正是我需要的。谢谢@内德克:很高兴这就是你要找的@谢谢!