结构指针的向量

vector of struct pointer

本文关键字:向量 指针 结构      更新时间:2023-10-16

以下是我的问题

struct point{
     int x;
     int y;
};   
struct OuterStruct 
{
    std ::vector <point *> pa;
    std ::vector <point *> pb;
};
OuterStruct atest; // global variable

现在在我的主程序中,我正在做这个

point n ;
n.x=1;
n.y =2;
atest.pa.push_back(n);
atest.pb.push_back(n);

.

和其他一些函数如果我使用这个全局结构,pa和pb的值丢失了,它们有一些垃圾值。我做错什么了吗

改变指针向量:

struct OuterStruct 
{
    std::vector<point*> pa;
    std::vector<point*> pb;
};

转化为对象向量:

struct OuterStruct 
{
    std::vector<point> pa;
    std::vector<point> pb;
};
  • 使用有意义的名称(pa, pb, atestOuterStruct不怎么说…)
  • 在命名约定上保持一致(如果你用UpperCamelCase命名类型,那么point -> Point)
  • 尽量避免使用全局变量
  • point创建自定义构造函数以简化其创建:

    struct point {
        point(int x_, int y_) : x(x_), y(y_) { }
        int x;
        int y;
    };   
    

    那么你可以简单地做:

    atest.pa.push_back(point(1,2));