c++ - 如何在C++中初始化结构中的 vector

标签 c++ vector struct

我在 C++ 中遇到 vector 问题。我是 C++ 的新手,所以请记住这一点。

所以我在程序的开头有以下结构:

typedef struct grupo
{
    float transX, transY, transZ, rotX, rotY, rotZ, rotAngle, scaleX, scaleY, scaleZ;
    char **modelos;
    struct grupo** grupos;
    int nNomes = 0, nGrupos=0;
    std::vector<float> vertices;
};

struct grupo *grupo;

我只是像这样开始主要内容:

grupo = (struct grupo*)malloc(sizeof(struct grupo));
grupo->modelos = (char **)malloc(sizeof(1));
grupo->grupos = (struct grupo **)malloc(sizeof(struct grupo));

在 main 的中间,我尝试使用这个:

grupo->vertices.push_back(x);

但是它总是让程序崩溃。我正在使用 visual studio,并使用 Debug模式。我可以看到,当将 X 推到崩溃的 vector 时(x 有一个值)。我试图将 vector 更改为 float 组。所以我可以想象的问题是 vector 的初始化......你能帮我解决我遗漏的问题吗?

谢谢你:)

最佳答案

您正在使用 C++,除非出于特定原因,否则不需要“new”或 malloc 关键字。您不需要结构的 typedef。

我不确定你的 char** 应该是什么,但你可以使用 std::string 作为字符串。

也许你想做的是这样的:

struct Grupo
{
    float transX, transY, transZ, rotX, rotY, rotZ, rotAngle, scaleX, scaleY, scaleZ;
    std::string modelos;
    int nNomes = 0, nGrupos=0;
    std::vector<float> vertices;
};

主要内容:

Grupo grupo;
grupo.vertices.push_back( ... );

然后我会建议您阅读更多关于什么是 C++ 语言以及它为什么不是 C 的内容。

关于c++ - 如何在C++中初始化结构中的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391062/

相关文章:

c++ - vector 指针<unique ptr> 上的 Sysmalloc 错误第二次推回

c++ - 将大小设置为结构类型全局变量时出现编译器错误

interface - 如何获取go struct的字段

C - 结构数组取消引用中的双指针结构

c++ - 返回如何在此代码中工作?

c++ - 按数字和冒号验证字符串

c++ - 空投的运行时检查*

c++ - std::bad_alloc 之后 std::vector 的状态

python - 根据角度和速度计算交点

r - 将数据框中的重复向量分配给 R 中的条件变量