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

Класс динамического массива для различных типов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как написать сумму ряда?? http://www.cyberforum.ru/cpp-beginners/thread390942.html
Привет,помогите пожалуйста написать программку на С++ Разработайте алгоритм и напишите программу вычисления суммы ряда для . В программе предусмотрите ввод требуемой точности ...
C++ выделение памяти и никогда не выполняете* ее освобождение Как это можно сделать написать программу с бесконечным циклом» в котором постоянно происходит выделение памяти и никогда не выполняете* ее освобождение. Попробуйте оба варианта. Сколько памяти вы... http://www.cyberforum.ru/cpp-beginners/thread390934.html
C++ Вычисление функций с использованием их разложения в степенной ряд
"Вычисление функций с использованием их разложения в степенной ряд" Цель: Практика в организации итерационных и арифметических циклов, использование функций. Постановка задачи
C++ Проблема с задачей,а именно с "sqrt"
Помогите... #include <iostream> #include <cmath> #include <iomanip> using namespace std; void main() { double c, A, Hb; const double Pi=3.1415; cout<<"vvedite c, c=";...
C++ Строки в С++, не могу понять что неправильно в программе http://www.cyberforum.ru/cpp-beginners/thread390914.html
Необходимо: 1) Найти количество слов в строке, 2) вывестии все слова в порядке возрастания длинн, 3) вычислить количество одинаковых строк в строке моя программа: #include <iostream.h>...
C++ Cформировать квадратную матрицу порядка n по заданному образцу Помогите пожалуйста подробнее

Показать сообщение отдельно
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
24.11.2011, 19:49
Цитата Сообщение от Сыроежка Посмотреть сообщение
А если ваша реализация включает массив, то уже никак без второго параметра не обойтись.
Хм. Я не вижу проблем объявить начальный размер массива параметром конструктора.
Например.
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
#include <iostream>
 
template <class T>
class Vector {
 public:
  typedef T ValueType;
  Vector() : capacity(0), begin(NULL), end(begin) {}
  explicit Vector(size_t capacity_)
    : capacity(capacity_), begin(new ValueType[capacity]),
    end(begin + capacity) {}
  ~Vector() { clear(); }
  ValueType &operator[](size_t n) { return begin[n]; }
  ValueType &operator[](size_t n) const { return begin[n]; }
  void resize(size_t newSize) {
    if (newSize > capacity)
      recap(newSize);
    end = begin + newSize;
  }
  void pushBack(const ValueType &value) {
    if (size() >= capacity)
      recap(capacity + 1);
    *end++ = value;
  }
  size_t size() const {
    return end - begin;
  }
  void clear() {
    delete [] begin;
    capacity = 0;
    begin = NULL;
  }
 private:
  void recap(size_t newCapacity) {
    ValueType *newBegin = new ValueType[newCapacity];
    size_t oldSize = size();
    size_t limit = ((newCapacity < capacity) ? newCapacity : capacity);
    for (size_t i = 0; i < limit; ++i)
      newBegin[i] = begin[i];
    delete [] begin;
    begin = newBegin;
    end = begin + oldSize;
    capacity = newCapacity;
  }
  size_t capacity;
  ValueType *begin;
  ValueType *end;
};
 
template <class T>
std::ostream &operator<<(std::ostream &stream,
  const Vector<T> &vector) {
  for (size_t i = 0; i < vector.size(); ++i)
    stream << vector[i] << " ";
  return stream;
}
 
int main(int argc, char *argv[]) {
  Vector<int> vector(5);
 
  for (size_t i = 0; i < vector.size(); ++i)
    vector[i] = i;
  std::cout << vector << std::endl;
  
  vector.resize(4);
  std::cout << vector << std::endl;
  
  vector.pushBack(5);
  vector.pushBack(6);
  std::cout << vector << std::endl;
}


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