C++ 中的矢量大小

Vector sizes in c++

本文关键字:C++      更新时间:2023-10-16

所以我正在开发一个小型数学库来娱乐,我对这个向量有一点问题。此方法用于转置矩阵,将行交换为列,反之亦然。它正确地执行此操作。然而,发生了一些奇怪的事情。根据我输入的 3 行 x 2 列矩阵,转置应该返回为 2x3,确实如此。问题是向量返回的大小为 4 而不是 2,尽管在方法中设置为 2。我已经在前后的不同时间点对其进行了测试。向量的大小只有在调用 #transpose 后才会变为 4。它在答案(生成的矩阵向量)之前预置两个大小为 0 的向量。关于如何的任何想法?我对 c++ 不够熟悉,不知道任何怪癖。

    Matrix Matrix::transpose() {
        vector<vector<float>> result;
        result.resize(columns);
        for (int col = 0; col < columns; col++) {
            vector<float> data;
            data.resize(rows);
            for (int row = 0; row < rows; row++) {
                data[row] = vec[row][col];
            }
            result.push_back(data);
        }
        return Matrix(result);
    }

代码首先调整result的大小,然后使用 push_back 在循环中追加到它。这会导致矢量调整两次大小,最终得到预期大小的两倍。

由于代码打算提前设置大小,因此正确的解决方法是将push_back行更改为 result[col] = data

相关文章:
  • 没有找到相关文章