Присвоение вектора вектора строки с вектором строки - PullRequest
0 голосов
/ 10 января 2020

Я хочу заполнить вектор вектора строки другим вектором строк. Но он не заполняется, и есть те же пустые значения, которые инициализируются во время определения.

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];

Вывод пуст.

1 Ответ

0 голосов
/ 10 января 2020

Давайте пройдемся по коду здесь:

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 пустых строки.

В l oop в строках 3-5 вы пытаетесь присвойте символ позиции 0..2 каждой из строк в s. Но это за пределами конца строк, так что это неопределенное поведение.

После неопределенного поведения все ставки выключены.

...