Массив векторов STL

Например, у меня есть имя класса Point.

class Point{
protected:
int x, y;
public:
void setX(int);
void setY(int)
int getX();
int getY();
}

void Point::setX(int newX)
{
x = newX;
}

Внутри есть setX, getX, setY, getY.

Как мне начать векторный массив с этим? чтобы я мог использовать setX, getX и все?

1

Решение

Вы просто должны объявить

vector<Point> myPoints;

Я рекомендую вам добавить конструктор к вашему классу, который принимает в качестве аргумента координаты точки:

class Point {
public:
Point(int xx, int yy) : x(xx), y(yy) {}
// Other things
}

Тогда вы можете просто добавить точки к вашему вектору, используя

myPoints.push_back(Point(10, 42));

и как только ваш вектор заполнен, вы можете получить координаты точек внутри, используя ваши функции. Например:

for (int i = 0; i < myPoints.size(); ++i) {
cout << myPoints[i].getX() << ", " << myPoints[i].getY() << endl;
}
3

Другие решения

Просто включите vector и использовать векторные функции.

#include <iostream>
#include <vector>

/* .... */
size_t number_of_elements = 100;
std::vector<Point> myPointVector(number_of_elements);

for(unsigned i = 0; i < myPointVector.size(); ++i){
myPointVector[i].setX(i);
myPointVector[i].setY(number_of_elements - i);
}

for(unsigned i = 0; i < myPointVector.size(); ++i){
std::cout << "Vector " << i << ": ";
std::cout << myPointVector[i].getX() << ", ";
std::cout << myPointVector[i].getY() << std::endl;
}

Если приведенный выше код сбивает вас с толку, я рекомендую вам прочитать хорошее введение в C ++ контейнер / итераторы / алгоритмы (или хорошую книгу по C ++ в целом).

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector