#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
.