将字符串向量与字符串向量分配向量

问题描述 投票:0回答:1

我想用不同的字符串向量填充字符串向量的向量。但是它没有被填充,并且有相同的空值,它们在定义期间被初始化。

int A = 3;
vector<string> s(A);
vector<vector<string>> st(A , vector<string> (A));
  for(int i = 0; i < A;i++)
    for(int j =0; j<A;j++)
        s[i][j] = '.';

st.at(0) =s;
vector<string> ss(A) ;
ss = st[0];
for(int i = 0; i < A;i++)
    for(int j =0; j<A;j++)
        cout<<ss[i][j];

输出为空。

c++ multidimensional-array vector stl
1个回答
0
投票

让我们在这里遍历代码:

int A = 3;
/*1*/ vector<string> s(A);
/*2*/ vector<vector<string>> st(A , vector<string> (A));
/*3*/   for(int i = 0; i < A;i++)
/*4*/     for(int j =0; j<A;j++)
/*5*/         s[i][j] = '.';

在标记为“ 1”的行上,创建了一个由三个空字符串组成的向量(s)。在标记为“ 2”的行上,创建一个包含三个向量的向量(st),每个向量包含3个空字符串。

在第3-5行的循环中,您尝试将一个字符分配给s中每个字符串的位置0..2。但这超出了字符串的结尾,因此这是未定义的行为。

在未定义的行为之后,所有投注均关闭。

© www.soinside.com 2019 - 2024. All rights reserved.