调整类中二维向量的大小

Resize two dimensional vector in a class

本文关键字:向量 二维 调整      更新时间:2023-10-16

我正在尝试调整类中向量的大小。我不知道错误在哪里。希望你能帮助我。

这是我的代码:

class State {
private:
    vector<int> numbers;
    int score;
public:
    int getScore() {
        return score;
    }
    void setScore(int score) {
        this->score = score;
    }
    int getSize () {
        return this->numbers.size();
    }
    void setSize(int size) {
        this->numbers.clear();
        this->numbers.resize(size);
        for (int i = 0; i < size; ++i)
            this->numbers[i].resize(size);
    }
};

当我试图编译时,我得到了这个错误:

In file included from ./power.cpp:11:
./power.hpp:45:24: error: member reference base type 'value_type' (aka 'int') is not a structure or union
                    this->numbers[i].resize(size);
                    ~~~~~~~~~~~~~~~~^~~~~~~
1 error generated.

希望你能帮助我。

提前感谢:)

vector<int> numbers;

声明一个一维向量。在线

this->numbers[i].resize(size);

假设numbers[i]本身就是一个向量,但事实并非如此(它是一个int)。你可能想要的是申报

vector<vector<int>> numbers;

或者将2D矢量"模拟"为1D展平矢量(通常更快),但要确保从2D映射到1D,反之亦然。