c++中的结构数组
Array of structures in C++
我正在尝试定义
Vertex[] total_vertices = new Vertex[no_vertice];
在c++ 。但是当编译时,我得到这个:
:568:8:错误:'['令牌前预期的非限定id
我需要声明一个大小为"no_vertice"的顶点数组,然后使用它的"Length"方法来获取它的大小。为什么不工作?
在c++中,[]
只在变量名之后,而不是在类型之后(与Java或c#不同)。
但这无论如何都不起作用,因为您不能将指向数组的第一个元素的指针(由new
返回)分配给数组。你需要使用一个指针:
Vertex* total_vertices = new Vertex[no_vertice];
并确保delete[]
后,你完成使用它。
你说你需要使用它的Length
方法,这有两个问题:
- 数组不像java中那样有方法;它们只是c++中的内存块。如果您想使用具有成员函数的类数组结构,请查看
std::vector
你不需要一个数组的
Length
方法,即使他们有一个(他们没有),因为你已经有了no_vertice
变量的大小。c++数组没有length
方法。您需要查看std::vector
正确的做法是。
Vertex *total_vertices = new Vertex[no_vertice];
然而,在c++中,内置数组没有Length
方法。它们根本没有方法,因为它们不是类。它的"长度"应该是no_vertice
。
你似乎说 Java 或 c#…
你想
std::vector<Vertex> total_vertices(no_vertice);
,然后使用它的size()
方法来获取大小。
最好避免直接使用new
,除非没有其他选择,否则很容易丢失对象的所有权并最终导致内存泄漏。
你应该这样做boost::shared_array total_vertices(新顶点[no_vertices]);或boost::scoped_array total_vertices(新顶点[no_vertices]);这样你就不必担心清理自己和泄漏内存。http://www.boost.org
在c++中,如果vector可以做你想做的事情,总是使用vector而不是数组。因为矢量提供了一种简单的方法和一些有用的方法(比如你想要的size())。最重要的是,当你订阅vector中的一个元素时,vector比数组更安全(vector有一个end()
方法来确保你不能访问它的范围之外)。所以我认为你应该这样写:
#include <vector>
std::vector<Vertex> total_vertices(no_vertice); //vector is a container so you should declare it with a specified type.
您可以在vector的c++参考中获得有关vector
的更多信息。
相关文章:
- 从函数中全局删除并重新实例化数组结构,而无需在编译时知道数组的大小
- 如何使用函数的输出初始化 const 数组结构字段?
- 传递数组结构、ofstream 和 interger 以运行
- 从文本文件中读取并输入到数组结构中,然后显示读取的数据C++
- 将文本文件读取到数组结构中
- C/C++中数组结构和数组结构的通用接口
- C++ MDC final-在字符类型的数组结构中按字母顺序对记录中的名称进行排序
- C++ 使用数组结构创建平衡的二叉搜索树
- C++:释放动态数组(结构成员)和指向此结构的指针的方法
- 使用 vector 在 c++ 中声明 3D 数组结构
- 数组结构无法正确打印
- 如何在C++中访问数组结构内部的数组结构
- CIN进入数组结构似乎什么也没输入
- ifstream将数组结构到txt文件中,然后尽可能将其提取为数组
- wlanapi-将WlanFreeMemory释放其WLAN_INTERFACE_INFO数组结构
- 显示数组结构 c++
- C++ 使用函数访问数组结构的方法是什么?
- 将庞大的数组结构复制到 GPU
- 如何封送包含字符矩阵的数组结构
- C++多维数组结构的对齐