если уж билдер 6, то это достаточно продвинутый компилятор, чтобы использовать шаблоны с++. Есть например такой: vector<typename T>
Код:
#include <vector>
#include <fstream>
using namespace std;
void myFunc()
{
vector<double> fdoubles(100, 0.);
// создан объект std::vector<double>,
// представляющий собой обычный массив из 100 элементов
// и инициализирован значением 0.0
// объект будет уничтожен автоматически при выходе из блока
// для работы с памятью используется класс std::allocator<double>.
// тот, который по умолчанию использует операторы new и delete[],
// но можно их переопределить (но лучше не трогать, если нет острой необходимости)
// работаем как с обычным массивом:
fdoubles[0] = 3.14;
fdoubles[1] = 123.23;
// если нужна проверка границ:
fdoubles.at(0) = 3.14;
fdoubles.at(101) = 123.23; // здесь вылетит с исключением std::out_of_range
// меняем размер, если надо, память перераспределяется автоматически
// но так, что если просишь меньше, то не освобождается, а просто берётся меньше
// из уже выделенного куска. Например:
fdoubles.resize(50); // используется кусок из 100*sizeof(double)
fdoubles.resize(200); // используется кусок из 200*sizeof(double)
}
vector<double> readData()
{
// работа с памятью оптимизирована для добавления небольших объектов.
// то есть это идеальный класс для использования в качестве буфера чтения (небольших объектов)
// и использования индексации.
ifstream input("my_data.txt");
double buf;
vector<double> result;
while(input>>buf) result.push_back(buf);
return result;
}
// TList в делфи - это аналог vector<void*>