STL向量数组

时间:2012-11-11 10:47:41

标签: c++

例如我有一个类名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和所有?

2 个答案:

答案 0 :(得分:3)

你只需声明一个

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;
}

答案 1 :(得分:1)

只需添加vector并使用vector functions

#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 ++书)的好介绍。