结构指针的向量

时间:2013-03-30 22:06:03

标签: c++ vector

以下是我的问题

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的值会丢失,并且它们有一些垃圾值。 我在这里做错了吗。

1 个答案:

答案 0 :(得分:0)

更改指针向量:

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

进入对象矢量:

struct OuterStruct 
{
    std::vector<point> pa;
    std::vector<point> pb;
};
并且
  • 使用有意义的名称(papbatestOuterStruct并没有多说......)
  • 在命名约定中保持一致(如果您使用UpperCamelCase命名类型,则point - &gt; Point
  • 尽可能避免使用全局变量
  • point创建自定义构造函数以简化其创建:

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

    然后你就可以做到:

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