массив указателей на массив указателей на строку new
От: hypertonick Россия  
Дата: 23.07.08 20:35
Оценка:
Подскажите пожалуйста. Как создать динамически такую конструкцию:

wchar_t *(TempData[2])[500]  =    new ... или
wchar_t (*TempData[2])[500]  =    new ...


(массив указателей на 2-х мерный массив строк из 500 элементов, длина строки любая, например 100)
Пробовал:
wchar_t *(TempData[2])[500]  = (new  wchar_t* [100][2])[500];

и т.п. не выходит.
Re: массив указателей на массив указателей на строку new
От: gear nuke  
Дата: 23.07.08 21:34
Оценка:
Здравствуйте, hypertonick,

Re: new(R);
Автор: Roman Odaisky
Дата: 22.07.08
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re: массив указателей на массив указателей на строку new
От: Programador  
Дата: 23.07.08 23:50
Оценка:
Здравствуйте, hypertonick, Вы писали:

H>(массив указателей на 2-х мерный массив строк из 500 элементов, длина строки любая, например 100)


А что именно нужно, както не очень понятно


Re: массив указателей на массив указателей на строку new
От: Arsenicum Россия  
Дата: 24.07.08 08:00
Оценка:
Здравствуйте, hypertonick, Вы писали:

...

Не совсем понятно что всё-таки нужно. Предположим задача такая: "Создать массив из 500 wide-строк по 100 символов каждая (не больше)"

1. Если есть возможность использовать STL:

#include <vector>
#include <string>

std::vector< std::wstring > strings;


В этом примере создаётся пустой массив строк. В него можно добавлять (метод push_back) строки или создать в нём 500 строк (метод resize). Строки не ограничены в длине (числе символов). Подробности в документации.

2. "Чистый C"

const size_t count=500;
const size_t lenght=100;

// Динамическое создание массива указателей на wchar_t
typedef wchar_t *wchar_t_pointer;
wchar_t **strings=new wchar_t_pointer[count];

// Создание массивов wchar_t (строк)
for (size_t i=0; i<count; ++i)
    strings[i]=new wchar_t[lenght];

// Использование

// Например:
// wcscpy(strings[0], L"abcde");
// wcscpy(strings[1], L"123");
// ...

// Не забываем освобождать память!!
for (size_t i=0; i<count; ++i)
    delete[] strings[i]; // строки
delete[] strings; // массив строк


3. Обернуть 2 в класс

Решение данного варианта предлагается как домашнее задание
Re: массив указателей на массив указателей на строку new
От: Bell Россия  
Дата: 24.07.08 10:15
Оценка: 2 (1)
Здравствуйте, hypertonick, Вы писали:

H>Подскажите пожалуйста. Как создать динамически такую конструкцию:


H>
H>wchar_t *(TempData[2])[500]  =    new ... или
H>wchar_t (*TempData[2])[500]  =    new ...
H>


H>(массив указателей на 2-х мерный массив строк из 500 элементов, длина строки любая, например 100)

H>Пробовал:
H>
H>wchar_t *(TempData[2])[500]  = (new  wchar_t* [100][2])[500];
H>

H> и т.п. не выходит.

int main()
{
   wchar_t* (*arr3d)[2][500] = new wchar_t*[100][2][500];

   for(int i = 0; i < 100; ++i)
   {
      wchar_t* (&arr2d)[2][500] = arr3d[i];
      for(int j = 0; j < 2; ++j)
      {
         wchar_t* (&arr1d)[500] = arr2d[j];
         for(int k = 0; k < 500; ++k)
            arr1d[k] = L"123";
      }
   }
   return 0;
}


Оно?
Любите книгу — источник знаний (с) М.Горький
Re[2]: массив указателей на массив указателей на строку new
От: hypertonick Россия  
Дата: 24.07.08 19:51
Оценка:
Спасибо за предложенное решение. Получилось не совсем то, что я хотел: мне нужно
Указатель на масив из 2 указателей, каждый из которых указывает на массив строк(500 строк длиною 100)
Re[2]: массив указателей на массив указателей на строку new
От: hypertonick Россия  
Дата: 24.07.08 19:56
Оценка:
Здравствуйте, Bell.
Оно самое -прямо в точку.
Большое спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.