ошибка: не удалось преобразовать ‘tab’ из ‘vector<std::vector<std::__cxx11::basic_string >>’ в ‘vector<std::__cxx11::basic_string>’

#c

#c

Вопрос:

вот мой код, который записывает столбец j доски t на другой вкладке доски! Я новичок, поэтому я не понимаю проблемы: (

     vector<string> colonne(vector<vector<string>> t, int j) {
    vector<vector<string>>tab;
    for(int i=0; i<t.size(); i  ){
        for(int n=0; n<=j; n  ){
            if(n == j){
                tab[n]=t[j];
            }
        }
    }
    return tab;
}
 

вот сообщение с терминала:

 error: could not convert 'tab' from 'vector<std::vector<std::__cxx11::basic_string<char> >>' to 'vector<std::__cxx11::basic_string<char>>'
 

Комментарии:

1. если кто-нибудь может мне помочь…

2. A vector<vector<string>> — это не то же самое, что a vector<string> . Ваш возвращаемый тип vector<string> . Я склонен закрыть этот вопрос как опечатку.

3. Этот код имеет множество проблем. Трудно понять, как предложить решение

Ответ №1:

Ваш код имеет множество проблем. Я думаю (основываясь на вашем описании), что код, который вы пытаетесь написать, это

  vector<vector<string>> colonne(vector<vector<string>> t, int j) {
    vector<vector<string>> tab(t.size());
    tab[j]=t[j];
    return tab;
}
 

Приведенный выше код создает новую доску tab с тем же количеством столбцов, что и первая доска. Затем он копирует один столбец (с индексом j ) с первой доски на вторую доску, а затем возвращает вторую доску.

Обратите внимание, однако, что все остальные столбцы в новой таблице будут иметь нулевой размер. Мне это кажется странным, но, возможно, это то, что вы хотите. Если нет, то дайте мне знать, и я постараюсь внести улучшения.