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

Изменение размера динамического массива (resize) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Наименьшее из значений элементов, ниже и принадлежащей главной диагонали матрицы http://www.cyberforum.ru/cpp-beginners/thread1181777.html
Даны натуральное число n, целочисленная квадратная матрица порядка n, получить b1, ...,bn, где bi это наименьшее из значений элементов, находящихся в начале i-й сроки матрицы до элемента, принадлежащей главной диагонали, включительно. Написать с помощью дочернего класса. Кто может выслать код написанный простым языком с коментами? У меня не получается, что бы выводил наименьшие число ниже...
C++ Почему счетчик в цикле for начинается с нуля, а не с единицы? привет. почему когда надо сделать какое-то действие, например 4 раза, то пишут: for (int i=0, i<4, i++) { //... } а не так: for (int i=1, i<=4, i++) { //... } http://www.cyberforum.ru/cpp-beginners/thread1181770.html
C++ По некоторому количеству строк текста (не более N) найти пары строк с общим словом
По некоторому количеству строк текста (не более N) найти пары строк с общим словом.
Считать текстовый файл и вывести частоту распределения длин слов текста C++
Разработать программу, которая читает текстовый файл и выводит частоту распределения длин слов текста. Имя читаемого файла запрашивается с клавиатуры. Знаками препинания в тексте пренебречь.
C++ Создать БД «Аптека», включающую следующую информацию: код лекарства, название, дата выпуска http://www.cyberforum.ru/cpp-beginners/thread1181749.html
Создать БД «Аптека», включающую следующую информацию: код лекарства, название, дата выпуска, срок хранения, форма изготовления, объем партии и т.д. Сделать возможным корректировку, добавление, удаление и поиск записей. Файл должен содержать не менее 10 записей.
C++ Определить, сколько раз меняется знак в заданной матрице, начиная с начала Разработать программу, которая формирует матрицу размером m x n (значения m и n вводятся с клавиатуры), определяет, сколько раз меняется знак в данной матрице, начиная с начала, и номера позиций, в которых меняется знак. Матрица должна храниться в памяти в виде динамического массива, элементы ее – случайные вещественные числа, распределенные по равномерному закону на интервале . подробнее

Показать сообщение отдельно
outoftime
║XLR8║
508 / 430 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
20.05.2014, 12:46     Изменение размера динамического массива (resize)
Цитата Сообщение от Donnerwetter Посмотреть сообщение
Суммируя все вышесказанное
Я своим постом хотел показать что выделять новую память каждый раз когда надо добавить элемент в коллекцию - плохо! Поэтому держат дополнительный параметр - capasity, который указывает реальный размер массива, а size указывает количество элементов в массиве. Так вот, перевыделять память надо только если size > capasity, т.е. когда памяти для добавления элемента не хватает.

Цитата Сообщение от Donnerwetter Посмотреть сообщение
нет, классы пока еще не знаю.
Покажу пример на структуре.

Donnerwetter,
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
struct Reader {
    char* ID;
    char* name;
    uint8_t age;
    Reader Read() {
        std::cout << "Enter ID name age: ";
        std::cin >> ID >> name >> age;
    }
};
 
struct Array {
    size_t capasity;
    size_t size;
    Reader* array;
    
    Array(const size_t& default_capacity = 10) {
        capasity = default_capacity;
    }
    
    void add(const Reader& reader) {
        if (size >= capasity)
            resize(capasity * 1.6);
 
        array[size++] = reader;
    }
    
    void resize(const size_t& value) {
        if (value > capasity) {
            // выделяем память под новый массив и копируем данные
        } else {
            // обрезаем массив до заданных размеров
        }
    }
};
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru