如何构造可以替换 typedef vector<vector<T>> 类型的类
Posted
技术标签:
【中文标题】如何构造可以替换 typedef vector<vector<T>> 类型的类【英文标题】:How to construct class that can replace typedef vector<vector<T>> Type 【发布时间】:2019-04-27 15:36:11 【问题描述】:我正在学习 C++ 课程,并想构建自己的课程,而不是使用 2D 矢量“typedef vector<vector<T>> C_type
”。我写了一些代码:
class T
public:
int a;
int b;
T(int a, int b) : a(a), b(b)
;
现在我有:
typedef vector<vector<T>> C_type;
我想改用一个类并创建一个构造函数并对其进行初始化,例如:
class C_type
vector<vector<T>> name;
C_type();
C_type::C_type()name = vector<vector<T>>(..........
我想使用 2D 矢量作为类成员。谢谢。
【问题讨论】:
是的..我想通了。我正在学习课程并尝试一些事情。谢谢 【参考方案1】:下面是一些简单的开始:
#include <iostream>
#include <vector>
template<typename T>
class C_type
public:
C_type(int rows, int cols) : _vec(std::vector<std::vector<T>>(rows, std::vector<T>(cols)))
C_type() : C_type(0, 0)
T get(int row, int col) return this->_vec.at(row).at(col);
void set(int row, int col, T value) this->_vec.at(row).at(col) = value;
size_t rows() return this->_vec.size();
size_t cols() return this->_vec.front().size();
private:
std::vector<std::vector<T>> _vec;
;
int main()
C_type<int> c(2, 2);
for ( unsigned i = 0; i < c.rows(); ++i )
for ( unsigned j = 0; j < c.cols(); ++j )
c.set(i, j, i + j);
for ( unsigned i = 0; i < c.rows(); ++i )
for ( unsigned j = 0; j < c.cols(); ++j )
std::cout << c.get(i, j) << " ";
std::cout << "\n";
return 0;
【讨论】:
以上是关于如何构造可以替换 typedef vector<vector<T>> 类型的类的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 中将 typedef 与类初始值设定项参数一起使用?
为啥 std::vector::data() 中没有使用指针 typedef?
std::vector 类与非成员函数(连同 typedef)[关闭]