2D Std ::给定类的向量

时间:2017-10-25 13:41:13

标签: c++ stdvector

我尝试使用矢量来存储矢量中某些数据的x和y坐标。我认为以下方法可行,但事实并非如此。我花了很多时间寻找希望让它工作但却徒劳无功。我感谢任何帮助。

class A {

public:
  A(size_t x, size_t y); //ctor

  };

如果我想创建一个类A类的矢量,那么2D,为什么

 std::vector<A> vec(10); not working? 

void count(size_t x, size_t y) {
    vec.at(x,y);
}

   ERROR: error: no matching function for call to ‘std::vector<Board>::at(size_t, size_t&)
   note:   candidate expects 1 argument, 2 provided

由于A类的构造函数有2个变量,所以我的类型为A的向量也需要2个变量吗? 如果没有,获得A类的2d向量的正确方法是什么,以便我可以在x,y处调用.at() - 函数并获取存储在那里的任何内容?

1 个答案:

答案 0 :(得分:2)

此向量重载:

std::vector<A> vec(10);

通过调用A的默认构造函数制作10份A类型的副本。由于您没有提供默认构造函数,因此会发生错误。提供默认构造函数:

class A {
public:
    A() = default;
};
int main() {
    std::vector<A> v(10);
}

或使用适当的构造函数作为第二个参数:

class A {
public:
    A(size_t x, size_t y) {
    // your code
    }
};
int main() {
    std::vector<A> v(10, A(1, 2));
}

话虽如此,不要混淆向量载体:

std::vector<std::vector<T>> v;

使用带有两个参数的简单构造函数或带有两个数据成员的简单类。