访问对象';将属性正确地从向量中删除并清除它 我不熟悉C++中的OO。

访问对象';将属性正确地从向量中删除并清除它 我不熟悉C++中的OO。,c++,vector,C++,Vector,我一直在将MyPoint类的实例推送到 vector <MyPoint> trianglePoints; 这是我对MyPoint的定义: class MyPoint { public: float x; float y; MyPoint(float x, float y) //constructor { this->x=x; this->y=y; } }; //end 将三个点推入向量后

我一直在将
MyPoint
类的实例推送到

vector <MyPoint> trianglePoints;
这是我对MyPoint的定义:

class MyPoint {

public:
    float x; 
    float y;

    MyPoint(float x, float y) //constructor
    {
        this->x=x;
        this->y=y;

    }

}; //end
将三个点推入向量后,我调用函数渲染三角形,然后执行以下操作:

trianglePoints.clear();
问题:

a) 如何从向量中得到三个x,y坐标?我想把每个存储到它自己的int席,彝渲染它们。 b) 即使我没有为MyPoint类定义析构函数,也可以对向量调用
clear()

如何从向量中得到三个x,y坐标

vector
重载下标运算符(
[]
),因此可以像在数组中一样访问元素。或者(最好)可以使用迭代器

即使我没有为MyPoint类定义析构函数,也可以对向量调用
clear()

对,;编译器提供一个默认析构函数

如何从向量中得到三个x,y坐标

vector
重载下标运算符(
[]
),因此可以像在数组中一样访问元素。或者(最好)可以使用迭代器

即使我没有为MyPoint类定义析构函数,也可以对向量调用
clear()

对,;编译器提供了一个默认析构函数。

a)

(b)

是的,该类使用默认析构函数。

a)

(b)

是的,该类使用默认析构函数。

(a)可以使用数组语法从向量中获取元素:

for (int i = 0; i < 3; i++)
{
    do_something(trianglePoints[i]);
}
有关如何使用
std::vector
的更多详细信息,请参阅例如

(b) 这是确定的要求明确;只有当您有资源要清除(如内存、文件句柄等)或您的类是基类(在这种情况下,您可能需要虚拟析构函数)时,才需要显式析构函数。

(a)您可以使用数组语法从向量中获取元素:

for (int i = 0; i < 3; i++)
{
    do_something(trianglePoints[i]);
}
有关如何使用
std::vector
的更多详细信息,请参阅例如


(b) 这是确定的要求明确;显式析构函数只有在您有资源需要清理(如内存、文件句柄等)或者您的类是基类(在这种情况下,您可能需要一个虚拟析构函数)的情况下才是必需的。

如果您没有虚拟析构函数,请确保获得;这将有助于你回答这类问题。@James:在这方面,你现在听起来像我了。:)很好,我对自己说“买本书”感到厌倦了我认为问SO比翻阅一本书要快得多(而且更有教育意义,更能澄清思想)。@omgzor:Ha,不。如果你在网上浪费一些信息,你永远也学不好。另外,使用初始化列表。@GMan:Heh。好吧,既然我们没有巴特沃斯先生让初学者排队,我想我们都必须尽可能多地帮助他们:-DIf如果你没有,确保你得到;这将有助于你回答这类问题。@James:在这方面,你现在听起来像我了。:)很好,我对自己说“买本书”感到厌倦了我认为问SO比翻阅一本书要快得多(而且更有教育意义,更能澄清思想)。@omgzor:Ha,不。如果你在网上浪费一些信息,你永远也学不好。另外,使用初始化列表。@GMan:Heh。好吧,既然我们没有巴特沃斯先生让初学者排队,我想我们都必须尽可能多地帮助他们
for (int i = 0; i < 3; i++)
{
    do_something(trianglePoints[i]);
}
for (std::vector<MyPoint>::iterator it = trianglePoints.begin();
     it != trianglePoints.end(); ++it)
{
    do_something(*it);
}
std::for_each(trianglePoints.begin(), trianglePoints.end(); do_something);