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

Как увеличить размер дин. массива средствами С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите. Не компилирует текст программы, запрашивает в коде мол не достающую скобку. Ниже приведен текст программы. http://www.cyberforum.ru/cpp-beginners/thread279734.html
#include <iostream.h> unsigned int perimetr ( int a,int b); int main() { int a,b; cin >> a; cin >> b; cout << "perimetr=" << perimetr(a,b) ; return 0;
C++ Срочно! Алгоритм Бауэра Замельзона! #include <stdio.h> #include <math.h> #include <iostream> using namespace std; char stack_z; double stack_c; int tos_z=0; int tos_c=0; char number; http://www.cyberforum.ru/cpp-beginners/thread279733.html
C++ кейрус отказывается работать!!
вроде уже какой по счёту кейрус скачиваю с инета.. устанавливаю а в борланде язык не переключается((( или мб это из за того что у меня вин 7 ? Добавлено через 36 секунд чё подскажите сделать с...
Как разбить массив по 3 елемента и засунуть в другой массив C++
Здарова форумчане. Помогите, кому не лень решить задачу по программированию на c++ Кароче нам дан массив чисел от 1 до 18. Сначала нам нужно разбить массив по три елемента, т.е от 1 до 3, от 3 до 6,...
C++ Прерывание http://www.cyberforum.ru/cpp-beginners/thread279713.html
При вызове прерывание компилятор пишет ошибка доступа. #include <iostream> using namespace std; char a = "hello"; int main() { _asm {
C++ Переход с формы на форму Сетяне, скажите! Какой код нужно писать чтобы при нажатии кнопки открылось другое окно? буду безгранично благодарен :~) подробнее

Показать сообщение отдельно
FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297

Как увеличить размер дин. массива средствами С++ - C++

19.04.2011, 22:22. Просмотров 953. Ответов 1
Метки (Все метки)

Привет всем!!!
Подскажите плз, как увеличить размер (т.е добавить один элемент в конец) динамического массива средствами С++. (new и delete)

Пример:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <process.h>
#include <new.h>
 
using std::cout;
 
class Sample
{
public:
    Sample(int _a = 0) : a(_a) {}
    ~Sample() {}
private:
    int a;
    friend std::ostream &operator<< (std::ostream &stream, Sample &obj);
};
 
std::ostream &operator<< (std::ostream &stream, Sample &obj)
{
    stream << obj.a;
    return stream;
}
 
 
int main()
{
    int  n = 2;
    Sample *p = new Sample[n];
    p[0] = Sample(1);
    p[1] = Sample(2);
 
    for (int i = 0; i < n ; i++)
        cout << p[i] << '\n';
 
    ++n;
 
    //realloc(p, n*sizeof(Sample));   // вызывает ошибкупосле запуска на стадии работы (проблемы с кучей)
 
    // вместо realloc придумал следующее шаманство 
    Sample *temp = new Sample[n];
    for (int i = 0; i < n-1 ; i++)
        temp[i] = p[i];
 
    temp[n-1] = Sample(3);
    delete [] p;
 
    p = temp;
    /////////////////////////////////////////////////////////////
 
    for (int i = 0; i < n ; i++)
        cout << p[i] << '\n';
    
    delete [] p;
    system("pause");
 
}
Это можно решить с помощью malloc() и free() и realloc() заработает, но я так не хочу.

По поводу моей придумки с выделением еще одного блока памяти на единицу большего размера, думаю так не покатит, ибо если первый массив состоит из нескольких Гб то никто не будет выделять еще столько же памяти для добавления одного элемента в массив.

Посоветуйте стонибуть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru