gpt4 book ai didi

C++如何在 vector 中添加 vector ? vector .push_back( vector <>)?

转载 作者:太空宇宙 更新时间:2023-11-04 15:56:34 30 4
gpt4 key购买 nike

我正在创建一个 char 的二维 vector 数组作为类变量,但我在将 vector 添加到 vector 数组中时遇到了麻烦。

我正在使用 C++ 11 标准运行 gcc。

我尝试使用 vector< vector<char> > row(size, vector<char> );但错误会显示我没有定义 sizevector<char> .如果我用 int size 定义它和 vector<char> col它会认为这是一个新的函数声明,因为我将它作为一个类变量。

所以我用通常的方法vector< vector<char> > row;并具有向其中添加另一个 vector 的功能。所以我使用 this->row[i].push_back( vector<char> col);但随后出现错误提示 error: expected primary-expression before ‘col’出现。我也尝试只使用 this->row[i].push_back( vector<char> );但错误仍然存​​在说 error: expected primary-expression before ‘)’ .这可能很愚蠢,但我不知道如何将 vector 添加到 vector 中。

class Vector2d {
private:
int size;
vector< vector<char> > row;
public:
void make2d();
};

void Vector2d::make2d() {
for (int i = 0; i < this->size; i++) {
this->row[i].push_back( vector<char> col ); // compile error here
for (int j = 0; j < this->size; j++) {
this->row[i][j];
}
}
cout << "It works!" << endl;
}

我希望它将 vector 数组添加到 vector 数组中,并且我可以使用 row[i][j]对于程序的其余部分。但它给出了一个编译器错误,说 error: expected primary-expression before ‘col’我不知道该怎么办。

最佳答案

vector<char> col不是有效的表达式。它几乎看起来像一个变量声明(这不是您在这里需要的),除了它缺少一个分号来完成声明。

此外,您无法访问 row[i]直到 row实际上至少包含 i元素。 row[i].push_back尝试将 char 元素插入 std::vector<char>那就是 i vector 的 vector 的第 th 个元素(除了你从未创建 i th 元素)。

假设在下面的循环中,您似乎假设插入的 vector 应该有 size元素,这里是如何插入单个 vector size元素转化为 vector 的 vector :

row.push_back(std::vector<char>(size));
// or more simply
row.emplace_back(size);

如果您想插入一个空 vector ,只需使用:

row.emplace_back();

下面是如何插入所有 size size的 vector 一次性使用元素,以便您可以使用 row[i][j]对于所有 ij小于 size :

row.resize(size, std::vector<char>(size));

关于C++如何在 vector 中添加 vector ? vector .push_back( vector <>)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56318955/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com