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

Функция для перевыделения памяти для массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Что такое nan? http://www.cyberforum.ru/cpp-beginners/thread1230808.html
Собственно вопрос: что такое nan? Допустим v=2 #include<iostream> #include<cmath> using namespace std; int main() { setlocale(0,""); double E,m=pow(9.1*10,-31),c=(2.998*10,8),v,E1; cout<<"Введите скорость электрона v= "; cin>>v;
C++ си++ Описать Структуру с именем STUDENT с полями: 1. NAME-фамилия и инициалы; 2.GROUP-номер группы; 3.SES-успеваемость(массив из 5 элементов).Написать программу, выполняющую следующие действия: -ввод с клавиатуры данных в массив STUD1, состоящий из 10 структур типа STUDENT;записи упорядочиваются по возрастанию номера группы. - вывод фамилий и номеров группы студентов,имеющих средний балл больше... http://www.cyberforum.ru/cpp-beginners/thread1230794.html
Неверная кодировка при чтении из файла C++
Здравствуйте! Есть функция, которая читает символы из текстового файла. При чтении русской буквы выскакивает ошибка Expression: c >= -1 && c <= 255. В чем проблема, и как ее исправить? Вот фрагмент из функции: // из прочтенной строки выделяет слова и числа игнорируя знаки препинания и прочие символы и // сохраняет слова в words while (getline(fio, line))
Отправка нажатий в не активное окно игры C++
пишу небольшую програмку. требуеться отправлять нажатия в не активное окно игры использую вот такой код конструктор для хранения данных struct KeyCom { int panel; int key; };
C++ Преобразование последовательности целых чисел по заданному правилу http://www.cyberforum.ru/cpp-beginners/thread1230702.html
Задано последованность целых чисел B(2n), n≤200.Создать программу,которая превращает эту последованность за правилом:B(1)=B(2n),B(2)=B(2n-1),...,то пследованность остаётся без изменений,иначе делается перестановка B(1),B(3),...,B(2n-1), B(2),B(4),...,B(2n).Результат печатает по пять чисел в ряде
C++ Перевод кода с Basic Нужно переписать программу из Basic в C++ Тексты программ нужно перепечатывать внутрь сообщения! подробнее

Показать сообщение отдельно
satisfactor
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 51
20.07.2014, 08:48  [ТС]     Функция для перевыделения памяти для массива
Цитата Сообщение от Jupiter Посмотреть сообщение
satisfactor, выкладывайте весь код
Кликните здесь для просмотра всего текста
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#pragma once
#include <cstdlib>
#include <cassert>
#include <iostream>
 
template <class T>
class arrayM {
public:
    //overload
    T& operator[] ( int );
    T& operator[] ( int ) const;
    T& operator= ( const T &reference );
    //constructors
    arrayM( void );
    arrayM( const arrayM< T > & reference );
    //add
    void addElement( const T& reference );
    //delete
    void deleteByIndex( int );
    //search
    int searchElement( const T& reference ) const;
    //get
    int getSize( void ) const;
    //another
    std::ostream & show( std::ostream & = std::cout, char = std::cout.fill() );
    //destructor
    ~arrayM();
private:
    //service
    void resize( int number );
    T* data;
    int size;
};
 
//overload
//  overload []
template < class T >
T& arrayM<T>::operator[] ( int index ) {
    assert( index >= 0 && index < size );
    return data[index];
}
//  overload [] const
template < class T >
T& arrayM<T>::operator[] ( int index ) const {
    assert( index >= 0 && index < size );
    return data[index];
}
//  overload =
template <class T>
T& arrayM<T>::operator= ( const T &reference ) {
    if( this == &right ) {
        return *this;
    }
    resize( reference.size );
    for ( int i = 0; i < size; ++i )
        data[i] = reference.data[i];
    return *this;
}
//  overload <<
template < class T >
std::ostream & operator<< ( std::ostream &output, arrayM<T> &reference ) {
    return (reference.show( output, output.fill() ) );
}
 
//constructors
//  constructor by default
template <class T>
arrayM<T>::arrayM( void ) {
    size = 0;
    data = NULL;
}
//  constructor by reference
template <class T>
arrayM<T>::arrayM( const arrayM<T> &reference ) {
    size = reference.size;
    if ( size == 0 )
        data = NULL;
    else {
        data = new T[size];
        //copy elements
        for ( int i = 0; i < reference.size; i++ ) {
            data[i] = reference.data[i];
        }
    }
}
//add
//  addElement
template <class T>
void arrayM<T>::addElement( const T &reference ) {
    resize( size + 1 );
    data[size] = reference;
}
 
//delete
//  deleteByIndex
template <class T>
void arrayM<T>::deleteByIndex( int index ) {
    assert( index >= 0 );
    if (size > 0) {
        assert( index < size );
        for ( int i = index; i < size-1; i++ ) {
            data[i] = data[i+1];
        }
        resize( size-1 );
    }
}
 
//search
//  searchElement
template <class T>
int arrayM<T>::searchElement( const T &reference ) const {
    for (int i = 0; i < size; ++i)
        if ( data[i] == reference )
            return i;
    return -1;
}
 
//get
//  getSize
template <class T>
int arrayM<T>::getSize( void ) const {
    return size;
}
 
//another
//  show
template <class T>
std::ostream & arrayM<T>::show( std::ostream & output, char c ) {
    for ( int i = 0; i < size; i++ )
        if ( i < size - 1 )
            output << data[i] << space;
        else
            output << data[i];
}
 
//destructor
template <class T>
arrayM<T>::~arrayM() {
    delete [] data;
}
 
//service
//  resize: don't use in constructors!
template <class T>
void arrayM<T>::resize( int number ) {
    assert( number >= 0 );
    T* tmp = nullptr;
    if ( number == 0 ) {
        if ( data != NULL ) {
            delete [] data;
            data = NULL;
        }
    } else {
        tmp = new T[number];
        if ( data != NULL ) {
            for ( int i = 0; i < size && i < number; i++ ) {
                tmp[i] = data[i];
            }
        }
        std::swap( data, tmp );
    }
    size = number;
    if ( tmp != NULL ) {
        delete [] tmp;
    }
}
 
Текущее время: 04:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru