【问题标题】:STL Vectors arraySTL 向量数组
【发布时间】:2012-11-11 10:47:40
【问题描述】:

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

【问题讨论】:

  • 你想创建Point的向量吗? vector<Point> points;?

标签: c++


【解决方案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;
}

【讨论】:

    【解决方案2】:

    只需包含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++ 书籍)。

    【讨论】:

      猜你喜欢
      • 2018-10-10
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 2011-02-06
      • 2016-01-20
      相关资源
      最近更新 更多