在C 中收缩2D矢量
Shrink a 2D-Vector in C++
我想进入神经网络,这就是为什么我想编写自己的C 矩阵类。问题在于,我对C 也很新,并且要保持简单,我想使用std :: vector而不是2D阵列。目前我的班级看起来像
class Matrix {
private:
std::vector<std::vector<float>> data_;
public:
Matrix(const int& rows, const int& columns);
};
我知道一个std ::向量有点开销,但是我想将其保持在最小的开销中,而仅将矢量缩小到所需的确切尺寸:
Matrix::Matrix(const int &rows, const int &columns) {
this->data_ = std::vector<std::vector<float>>{};
this->data_.resize(rows);
for (auto col : this->data_) {
col.resize(columns);
}
}
我的问题是:这是按照我的意图方式缩小的工作,还是有更好的方法?
谢谢!
缩小表示使较小的。考虑到构造函数的上下文,我认为您的意思是扩大。
您的解决方案不是完全可以的,因为您的for
-LOOP调整了要调整大小的向量的副本。
不太重要,但值得一提的是:此外,您还制作一个不必要的空矢量副本来初始化data_
。实际上,当您进入构造函数的身体时,所有成员都已构造。最后,除非有参数名称的歧义,否则不必使用this->
来访问成员:
Matrix::Matrix(const int &rows, const int &columns) {
data_.resize(rows);
for (auto& col : data_) { // note the & to resize the vector in the vector
col.resize(columns);
}
}
附录:
您还可以为成员的构造函数提供明确的参数:
Matrix::Matrix(const int &rows, const int &columns) : data_(rows) {
for (auto& col : data_) {
col.resize(columns);
}
}
如果您喜欢简洁,甚至可以去:
Matrix::Matrix(const int &rows, const int &columns) : data_(rows, vector<float>(columns)) {
}
相关文章:
- 我是 C++ 的初学者,我想知道如何在 2D 矢量中获取重复值
- 如何在 c++ 中格式化和访问 2D 矢量数组中的数据
- 读取字符串文本输入以创建 2D 矢量
- 识别 2D 矢量C++中的位置
- Cython:无法分配给 2D 矢量
- 按列随机播放 2D 矢量
- 初始化空的 2D 矢量?
- 如何在 2d 矢量 c++ 中复制元素并将其放在原始元素旁边
- 如何访问具有地图的2D矢量?
- 通过功能进行2D矢量输入和显示
- 在C++中将对象添加到 2D 矢量
- 太空入侵者 – 2D 矢量运动算法
- 从 2 个 1D 矢量创建 2D 矢量
- 如何仅使用其中一个维度在 2D 矢量中插入值?
- 在 2D 矢量中获取多个输入时出现问题
- 2D 矢量循环 C++
- C++ 2D 矢量到 2D pybind11 数组
- 在 2D 矢量数组中的特定标头下添加数据
- 在C++中使用 2D 矢量时出现明显的内存泄漏
- 从文本文件中读取一行并将其存储在 C++ 中的 2D 矢量中