C++ C++;:标准::向量<;标准::向量<;T>&燃气轮机;通过引用传递到填充函数时,作为空向量的向量返回

C++ C++;:标准::向量<;标准::向量<;T>&燃气轮机;通过引用传递到填充函数时,作为空向量的向量返回,c++,stdvector,C++,Stdvector,作为一个可重复性最低的示例,我遇到问题的代码如下: #包括 #包括 使用名称空间std; void fill_vector_of_vectors(vector&data)//我放弃了为它想出一个合适的名字 { data.clear(); 数据。调整大小(4); 用于(矢量子阵列:数据) { 子数组。调整大小(4,'x'); } } int main() { 矢量数据; 填充向量(数据)中的向量; 用于(矢量子阵列:数据) { for(字符必须是子数组) { cout在filler函数中对子向量所

作为一个可重复性最低的示例,我遇到问题的代码如下:

#包括
#包括
使用名称空间std;
void fill_vector_of_vectors(vector&data)//我放弃了为它想出一个合适的名字
{
data.clear();
数据。调整大小(4);
用于(矢量子阵列:数据)
{
子数组。调整大小(4,'x');
}
}
int main()
{
矢量数据;
填充向量(数据)中的向量;
用于(矢量子阵列:数据)
{
for(字符必须是子数组)
{

cout在filler函数中对子向量所做的更改没有反映在它之外的上下文中的原因是对
语句的迭代
的误用

for (vector<char> subarray : data)

修复了该问题。

好吧,至少这证明了该问题包含了大量不必要的信息,并且不构成问题。@Enlico感谢您指出这些问题;我进行了必要的编辑。或者更好:
for(auto&subray:data)
@Enlico您可以使用“[mcve]”为了得到这个:。@MarekR,非常感谢!我应该把首字母缩略词记在心里。
for (vector<char> subarray : data)
for (vector<char>& subarray : data)