在C++中定义类中向量的大小

Defining the size of a vector inside a class in C++

本文关键字:向量 C++ 定义      更新时间:2023-10-16

我有一个名为"圆"的类,它由圆周上的点数定义。依次,每个点都由其x和y值定义。为了创建单独的点,我有一个这样的类:

class Point{
public:
    double x; // x position
    double y; // y position
    // Default constructor
    Point()
    : x(0.0),y(0.0){
    }
};

这基本上创建了一个点。我通过这个类从这些点创建"圆圈":

class Circle{
public:
    vector<Point> points; // points with x and y coordinates
    // Default constructor
    Circle()
    : points(0.0) {
    }
};

其将圆创建为点的组合。

圆圈的数量和每个圆圈上的对应点已经预先确定。为了便于论证,假设有M个圆,每个圆上有N个点。所以我创建了这样的实体:

vector<Circle> circles(M);

这就是我的问题开始的地方,因为我想预先确定每个"圆"对象的矢量"点"的大小,比如:

vector<Point> points(N);

tl;dr如何定义类内部向量的大小?我是否在课堂上做这件事其实并不重要。我想要的只是能够确定每个"圆"对象的"点"向量的大小。

用参数定义类Circle的构造函数

class Circle{
public:
    vector<Point> points; // points with x and y coordinates
    // Default constructor
    Circle( size_t n ) : points( n ) 
    {
    }
};

然后声明Circle 的向量

vector<Circle> circles( M, N );

如果您希望构造函数是显式的,例如

explicit Circle( size_t n ) : points( n ) 
{
}

那么你必须按照的方式定义矢量

vector<Circle> circles( M, Circle( N ) );

此外,您还可以将构造函数设置为默认

    Circle( size_t n = 0 ) : points( n ) 
    {
    }