Коллекции
Заранее спасибо!
ЗЫ: если нет, то какой конструкцией в С++ можно заменить preserve redim
используемую в Visual Basic для того, чтобы изменить размерность динамического массива, но при этом не сбросив его значений
БЛАГОДАРЮ!
Это Си.
Если пишешь на С++, искользуй контейнер vector. Он сам заботится о выделении и освобождении памяти
Заранее спасибо!
ЗЫ: если нет, то какой конструкцией в С++ можно заменить preserve redim
используемую в Visual Basic для того, чтобы изменить размерность динамического массива, но при этом не сбросив его значений
БЛАГОДАРЮ!
Советую скачать очень полезную библиотеку boost (http://boost.org). Среди прочего там есть контейнер multi_array, позволяющий изменять конфигурацию многомерного массива (имеется в виду, длину каждой размерности, но не количество размерностей... Впрочем, в подробности я не вникал, читай на вышеуказанном сайте).
Вот пример:
typedef array_type::extent_range range;
array_type::extent_gen extents;
array_type A(extents[2][3][4]);
boost::array<array_type::index,ndims> dims = {{4, 3, 2}};
A.reshape(dims);
Массив размером [2][3][4] конвертируется в массив [4][3][2] без потери данных.
Массив одномерный?
Что имеется в виду под изменением размерности массива - изменение собственно размера, т. е. числа вмещаемых туда элементов?
Если так, тебе нужен std::vector.
Пример:
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
// Резервируем место под еще 13 элементов
vec.reserve(16); // Указывается общий объем, а не число дополнительных мест
Тень Пса и Dart Bobr, пордон, я не уточнил: я имел в виду С++ Builder
вам же посоветовали хорошую библиотеку boost::multi_array.
пользуй STL контейнеры или, как уже посоветовали, BOOST.
vec[1,1]=5;
vec.reserve(10);
this->Caption = vec[1,1];
строка номер 3!!! - сделал этот массив одномерным(?), так как если:
vec.reserve(10,5);
то ошибка: Build
[C++ Error] collection.cpp(22): E2227 Extra parameter in call to _STL::vector<int,_STL::allocator<int> >::reserve(unsigned int)
вот, но самое интересное, что обращаюсь к значению vec[1,1], как к двумерному (??) - и он не выдвет ошибки
что тут не так?
ЗЫ: люди, где вообще про vector инфу найти можно? подскажите
заранее спасибо
что тут не так?
Почти все :):)
заранее спасибо
Хотя бы здесь: http://www.codenet.ru/progr/cpp/stl/istl.php
Но лучше купи хорощую книгу по языку С++
Но лучше купи хорощую книгу по языку С++
спасибо
гы-гы, очень смешно...
сначала как я понял, объявил двумерный массив, затем присвоил значение одной из его ячеек...
Т.е. ты взял какой то пример, запустил его, убедился, что он не работает, и теперь, не имея понятия о том, что происходит ввиду отсутствия теоретической базы, пытаешься понять, что неправильно??
Если так, то это крайне неправильный подход. Лучше не пожалей несколько дней и поглубже вникни в STL. Это сэкономит тебе много бессонных ночей такого вот шаманства;)
ЗЫ: люди, где вообще про vector инфу найти можно? подскажите
заранее спасибо
Так тебе надо вектор С++ - STL, или его аналог из стандартной библиотеки PHP? С языком-то определись.
Спасибо всем!