Форум программистов, компьютерный форум CyberForum.ru

Класс для работы с большими данными - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выяснить, пересекаются ли кривые http://www.cyberforum.ru/cpp-beginners/thread234638.html
Выяснить, пересекаются ли кривые у=аx3+bx2+сx+d и y=ex3+fx2+gx+h. При положительном ответе найти точки пересечения. Как здесь быть?Подскажите решение.
C++ Треугольник в прямоугольнике? Определить, поместится ли равнобедренный треугольник с основанием c и высотой h в прямоугольник со сторонами a и b так, чтобы высота треугольника была параллельна одной из сторон прямоугольника. Подскажите,пожалуйста решение этой задачки..? http://www.cyberforum.ru/cpp-beginners/thread234637.html
C++ Написать подпрограмму в программе на СИ..
Люди, спасите. завтра экзамен, а я клюшка неправильно сделала ргз, вот на переделку отправили. вот условие : Расстояние между двумя словами равной длины - это количество позиций, в которых различаются эти слова. В ЗАДАННОМ предложении найти пару наиболее близких слов ЗАДАННОЙ длины. задача: Требуется написать программу на СИ. (ОБЯЗАТЕЛЬНО ИСПОЛЬЗОВАТЬ ПОДПРОГРАММУ в программе, т.е. в...
C++ Обработка одномерных массивов.
В заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечетных элементов. Удалить из массива два первых простых числа. Проверить, изменилась ли серия подряд стоящих нечетных элементов.
C++ В программе предусмотреть диалог, откуда будут вводится элементы исходной матрицы – с клавиатуры или из текстового файла. Результаты выводить на экр http://www.cyberforum.ru/cpp-beginners/thread234628.html
Задана матрица целых чисел A(n,n). Найти два наибольших простых числа. Первое простое число заменить минимальным элементом матрицы, второе – максимальным элементом матрицы.
C++ Как передать указатель на функцию в функцию И как с ней работать? подробнее

Показать сообщение отдельно
xapiton
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 14

Класс для работы с большими данными - C++

27.01.2011, 10:19. Просмотров 1220. Ответов 11
Метки (Все метки)

Задали задание, написать класс который позволит работать с большими массивами, т.е. конструктор класса должен позволять создавать массив нужного (любого размера). Класс должен быть шаблонным. Должен уметь добавлять элементы в созданный массив. Получение доступа к элементам массива через индекс. Получение длины массива. Удаление текущего массива. И деструктор класса должен освобождать всю память.
Вот что у меня получилось :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
template <typename Type> class CLargeData
{
private:
    Type* m_ptr;
    int m_size;
public:
    void Display()
    {
        for( int i = 0; i < m_size; i++ )
        {
            cout << m_ptr[ i ];
        }
        cout << endl;
    }
    Type* Pop( int pos )
    {
        Type* ptr = &m_ptr[ pos ];
        return ptr;
    }
    void Push( Type* var, int pos )
    {
        int i = 0;
        while( var[ i ] != NULL )
        {
            m_ptr[ pos ] = var[ i ];
            i++;
            pos++;
        }
    }
    CLargeData ( int size ) 
    {
        m_size = size;
        m_ptr = (Type*) VirtualAlloc( 0, m_size, MEM_COMMIT, PAGE_READWRITE );
        cout << "constr" << endl;
    }
    ~CLargeData () 
    {
        VirtualFree( m_ptr, m_size, MEM_RELEASE );
        cout << "destr" << endl;
 
    }
};
А вот с определением длины выделяемой памяти не получается и с получением доступа через индекс ( наверно так надо [index] ) тоже не выходит.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru