我尝试使用矢量来存储矢量中某些数据的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() - 函数并获取存储在那里的任何内容?
答案 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;
使用带有两个参数的简单构造函数或带有两个数据成员的简单类。