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

Новый элемент в динамический массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поправьте программу http://www.cyberforum.ru/cpp-beginners/thread976647.html
Поправьте программку пожалста. #include<iostream> #include<iomainip> #include<math.h> using namespace std; int main(){ double a,x,y,z; cout.precision(2);
C++ Создать программу, которая вводит c клавиатуры массив целых чисел, находит в нем все повторяющиеся последовательности Создать программу, которая вводит c клавиатуры массив целых чисел, находит в нем все повторяющиеся последовательности (1 1, 2 2 2 и т.д.) и заменяет каждую из них на два элемента: повторяющееся число и длину последовательности. Выдать результирующую последовательность и пары "длина - число последовательностей данной длины.... Я смог сделать только поиск повторяющихся последовательностей и... http://www.cyberforum.ru/cpp-beginners/thread976643.html
C++ Классы, наследование, области видимости
A.h: #ifndef A_H #define A_H #include "C.h" class C; class A { private:
C++ Ввести два целых числа и посчитать результат деления
Суть задания в след: программа просит пользователя ввести два целых числа и выводит на экран результаты деления первого на второе и второго на первое. вот мой примерный код: #include "stdafx.h" #include <iostream> using namespace std; int main() { int a,b;
C++ Задание размера и инициализация массива указателей в конструкторе http://www.cyberforum.ru/cpp-beginners/thread976616.html
1) h: SDL_Texture *textures; Как задать размер и инициализировать в конструкторе? Если пишу так: SDL_Texture *textures; Подчёркивает "textures": "IntelliSense: недопустимый неполный тип". 2)
C++ HOdd-Even MergeSort How to write Odd-Even MergeSort Iterative and recursive program подробнее

Показать сообщение отдельно
Jack Wade
61 / 34 / 6
Регистрация: 24.02.2013
Сообщений: 250
13.10.2013, 20:42     Новый элемент в динамический массив
Здравствуйте!
Меня интересует один вопрос: можно ли в динамический массив добавлять размерность, или это делается путём копирования старого массива в новый?
Т.е. вот, допустим в динамическом массиве я сделал так, что выделил 100 элементов под него, и, допустим, я заполнил все 100 элементов данного массива, и я хочу добавить новый элемент, 101-й.
Как вариант-создать второй динамический массив с увеличенной размерность, как у старого массива, только +1(т.к. добавляем 1 элемент), потом занести значения из 1-го дин. массива в 2-й дин. массив, после чего, очистить 1-й динам. массив, и просто выделить память для 1-го дин. массива, как размерность 2-го, занести туда всё из 2-го, и в конце-очистить 2-й дин. массив.
В итоге-получим увеличенный дин. массив, размерность которого теперь 101 элемент.
Но это слишком долго...
Меня интересует-есть ли более простой способ занести новый элемент в дин. массив, или, остаётся только лишь такой вариант?

Добавлено через 8 минут
Пример добавления нового эл-та в дин. массив(с изменением его размерности):
Кликните здесь для просмотра всего текста

По логике-должно быть так...
Просто, на данный момент-не имею возможности проверить правильность кода...
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
int* mas;
int* back_up;
int mas_size;
 
int main(void)
{
mas_size=5;//Допустим, у нас на данный момент 5 элементов...
mas=new int[mas_size];
...
{
back_up=new int[mas_size+1];//Выделяем память для массива-копии
for (int i=0; i<mas_size; i++)
back_up[i]=mas[i];
//Теперь, мы, как бы, вводим данные в back_up[mas_size];//т.е. в 6-й элемент, т.к. back_up[5], и счёт начинается с нуля
delete mas;
mas=new int[mas_size+1];
for (int i=0; i<mas_size+1; i++)
mas[i]=back_up[i];
mas_size++;
delete back_up;
}
...
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru