c++ - C++ 中的 vector 大小

标签 c++ matrix vector

因此,为了好玩,我正在开发一个小型数学库,但我对这个 vector 有一点小问题。此方法用于转置矩阵,将行换成列,反之亦然。它正确执行此操作。然而,有些奇怪的事情正在发生。根据我输入的 3 行 x 2 列矩阵,转置应该返回为 2x3,它确实如此。问题是尽管在方法中设置为 2,但 vector 返回的大小为 4 而不是 2。我已经在之前和之后的不同时间点对其进行了测试。一旦调用#transpose, vector 的大小只会更改为 4。它在答案(结果矩阵 vector )之前添加了两个大小为 0 的 vector 。关于如何做的任何想法?我对 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 在循环中附加到它。这会导致 vector 大小调整两次,最终达到预期大小的两倍。

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

关于c++ - C++ 中的 vector 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36023965/

相关文章:

c++ - 我的树节点缺少链接

java - Java 中的 Dijkstra 算法

matrix - Unity3D 相机矩阵的高级信息

c++ - Vector vs Deque 在中间插入

c++ - 在其赋值运算符方法中调用对象的析构函数

r - 如何生成满足某些条件的向量?

c++ - SDL_Mixer 2.0.4 "MP3 support not available"即使安装了 libmpg123

c++ - Windows 7 当前启动/关闭位图

c++ - 使用来自 C++ 方法的函数指针调用 Objective-C 方法

c++ - 在 Eigen 中求解稀疏上三角系统?