标准::向量和构造函数
Std::vector and Constructor
我有一些这样的代码:
class A{
public:
A();
private:
vector<vector<int> > mat;
int a;
}
默认构造函数应该是什么样子的?喜欢这个?
A::A(): mat(10(10)),a(0){};
但是对我来说还有一个问题。我不知道"行"的数量。(vector<vector<int> >
应该有n个元素,vector<int>
应该有4个元素)而且我还有一个访问vector<vector<int> >
元素的问题.那你能告诉我怎么做吗?谢谢.:)
使用此参考页上 (2) 下的构造函数:
A::A() : mat(10, std::vector<int>(10)), a(0) { }
当然,您也可以传递变量。例如:
A::A(size_t n_rows, size_t n_cols) : mat(n_rows, std::vector<int>(n_cols)), a(0) {}
要访问元素,请使用两个成功的调用来operator[]
:
std::cout << mat[1][1]; // will print 0, as vector's elements are default initialized
第一次调用返回对vector<int>
的引用,第二次调用返回对int
的引用。
您可以添加一个采用行数的构造函数:
A(unsigned int rows): mat(rows, std::vector<int>(4)), a(0) {};
要访问元素,可以添加一些访问运算符或方法。例如
class A{
public:
public:
A(unsigned int rows): mat(rows, std::vector<int>(4)), a(0) {};
const int& operator()(unsigned int row, unsigned int col) const {
return mat[row][col];
}
private:
vector<vector<int> > mat;
int a;
};
然后
A a;
int i = a(3,4);
您可能希望向访问运算符添加一些范围检查。
相关文章:
- 一对向量构造函数:初始值设定项列表与显式构造
- 在c++中使用向量时,如何调用构造函数和析构函数
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 通过构造函数创建的所有对象都具有相同的向量
- 如何在 C++ 中使用它的构造函数初始化 unique_ptrs 的 2D 向量?
- 在 c++ 中具有向量的双向链表构造函数
- 将向量从 N1 缩小到 N2 项,而不触发默认构造函数并仅使用 move 语义
- 使用向量初始化参数化构造函数的对象数组
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- 初始化构造函数C++中结构的向量
- 在具有向量的类构造函数中进行析构函数调用
- 在 c++ 的构造函数中分配对象向量时出错
- 在类和构造函数中使用向量时出现分段错误
- 为什么调用复制构造函数来构造空unique_ptr向量?
- 有没有一种简单的方法可以在对象向量上调用构造函数?
- C++:无法将向量传递给构造函数
- STL向量上出现奇怪的复制构造函数错误
- 使用所述填充构造函数初始化向量中的向量
- C++:在向量<int> vn{MyAllocator<int>(a)} 中调用哪些构造函数?
- 是否将std矢量重新分配到默认的构造函数向量是擦除的好方法