C++ 如何在向量中添加向量?vector.push_back( 向量<> )?
C++ How to add vector in a vector? vector.push_back( vector<> )?
我正在创建一个 char 的 2d 向量数组作为类变量,但我在向量<向量>数组中添加向量时遇到了麻烦。向量>
我正在运行 gcc C++ 11 标准。
我尝试使用vector< vector<char> > row(size, vector<char> );
但错误会显示我没有定义size
和vector<char>
。如果我用int size
定义它并vector<char> col
它会认为它是一个新的函数声明,因为我把它作为一个类变量。
所以我使用通常的方法vector< vector<char> > row;
,并有一个函数将另一个向量添加到其中。所以我使用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 ‘)’
.这可能很愚蠢,但我不知道如何将向量添加到向量中。
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;
}
我希望它将矢量数组添加到矢量数组中,并且我可以将row[i][j]
用于程序的其余部分。但它给出了一个编译器错误error: expected primary-expression before ‘col’
说我不知道该怎么办。
vector<char> col
不是有效的表达式。它几乎看起来像一个变量的声明(这不是你在这里需要的),除了它缺少一个分号来完成语句。
此外,在row
实际包含至少i
个元素之前,您无法访问row[i]
。row[i].push_back
尝试将 char 元素推送到作为向量向量的第i
个元素的std::vector<char>
中(除非您从未创建过第i
个元素)。
鉴于在下面的循环中,您似乎假设插入的向量应该具有size
元素,以下是将size
元素的单个向量插入向量向量的方法:
row.push_back(std::vector<char>(size));
// or more simply
row.emplace_back(size);
如果要插入空向量,只需使用:
row.emplace_back();
以下是一次插入size
元素的所有size
向量的方法,以便您可以将row[i][j]
用于小于size
的所有i
和j
:
row.resize(size, std::vector<char>(size));
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 我们可以使用Back() - 值索引在其上执行向量插入
- vector.back() 可以用来为向量的最后一个元素赋值吗?
- 修改向量后引用 vector.back() 的奇怪行为
- 在 C++ 中将元素添加到空向量:为什么 push.back 有效而 [] 无效
- Vector_push back未填充向量(c++)
- C++为空向量上的向量返回什么::back()
- 我如何修复这段代码,使它不会pop_back或back()如果向量/堆栈是空的
- 向量resize(), push.back(), reserve()方法