преобразовать содержимое одного массива в другой 2d массив строк и столбцов

#c #multidimensional-array

#c #многомерный массив

Вопрос:

У меня есть эта функция, которая считывает текстовый файл и отправляет строки в массив, а затем из этой функции я отправляю этот массив и количество элементов в мой конструктор. Теперь мой конструктор создает динамический 2d-массив (я надеюсь). Я хотел бы, чтобы моим строкам и столбцам 2d-массивов были присвоены значения из полученного массива.

вот мой конструктор.

 Graph::Graph(string cities[], int n)
{
     this->nrOfCities=n;
     this->x=n;
     this->y=n;
     this->graph=new string *[x];
     for (int i = 0; i < x; i  ) 
        this->graph[i] =new string[y];
     for(int i=0;i<this->x;i  )
        for(int j=0;j<this->x;j  )
           this->graph[j]=NULL;
     for(int i=0;i<=this->x;i  )//I know this last part doesn't work.
         for(int j=0;j<this->x;j  )
             this->graph[0][j 1]=cities[j];
}
  

Приветствуется любая помощь.

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

1. Для чего нужен second outer? Если вы не используете i? Также третий внешний для.

Ответ №1:

Для того, чтобы создать динамический 2darray, вы должны попробовать s.th . вот так:

 type** arr2d;
arr2d = new type*[rows];
for(int i=0; i<rows;   i)
  arr2d[i] = new type[cols];
  

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

1. 2darr не является допустимым именем для переменной в C , поскольку оно начинается с числа.

2. вы имеете в виду что-то вроде этого? this->graph=new string[x]; for (int i = 0; i < x; i) this->graph[i] = new string[y]; у меня это не сработает, жалуется на оператор присваивания.

3. @ogward Что именно это говорит?

4. в нем говорится a value of type "std::string *" cannot be assigned to an entity of type "std::string **"

5. @ogward: graph должно быть типа string** . Так ли это? Я отредактировал ответ, чтобы он показывал тип arr2d .