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

delete внутри класса для самого класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Убрать нули после запятой http://www.cyberforum.ru/cpp-beginners/thread828681.html
Ребят помоги убрать ноли после запятой. Если введу 0,3000000000000000000000000000000000000000 то он пишет что больше 16 символов, а нужно чтобы отбросил нули и принял 0,3. Вот код: #include...
C++ нужна рекомендация по программе Помогите пожалуйста создать блок-схему к программе просто нужно перевести какое то число в двоичную систему программа уже готова #include "stdafx.h" #include<iostream> #include<string.h> ... http://www.cyberforum.ru/cpp-beginners/thread828677.html
C++ Выбор подходящего способа хранения\обработки данных
Здравствуйте! Передо мной встала задача выбора структуры данных, позволяющего хранить сортированные данные (в идеале позволяющая хранить пару ключ - значение) и и иметь возможность их добавления и...
C++ переделать из с++ в си
// Условие: Написать 3 функ-ии: // 1-ая: получает размерность массива, создает динамический массив и возвращает указатель на начало созданного массива. // 2-ая: получает адрес массива и его...
C++ лексический анализ дубль 2 http://www.cyberforum.ru/cpp-beginners/thread828654.html
у меня собственно говоря опять проблема. Лексический разбор многочлена. Только на этот раз я пошел другим путем. Вот что получилось. (код ниже). Вроде бы все работает, но если написать извращенный...
C++ Не могу создать шаблон Здорова господа! Снова пытаюсь написать шаблон и сново программа не компилируется #include <iostream> using std::cout; using std::endl; template<typename C> class String { class Cref; подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
05.04.2013, 12:54
awpe, Вцелом, т.к. матрица квадратная можно сделать проще. Так же, так как выделяется память сразу - переаллокация не нужна. Пример сейчас дам. А, нет. Слегка подгоняю. Но сама матрица расти не должна в любом случае.

Добавлено через 9 минут
Сам класс выглядит довольно просто.

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
#include <iostream>
#include <cstring>
 
class Matrix
{
public:
   Matrix(size_t rows, size_t cols) : rows_(rows), cols_(cols)
   {
      allocate();
   }
   Matrix(const Matrix& rhs) : rows_(rhs.rows_), cols_(rhs.cols_)
   {
      allocate();
      for (size_t i = 0; i < rows_; ++i)
      {
         memcpy(array_[i], rhs.array_[i], cols_ * sizeof(double));
      }
   }
   Matrix& operator = (const Matrix& rhs)
   {
      if (this == &rhs)
      {
         return *this;
      }
      Matrix tmp(rhs);
      swap(tmp);
      return *this;
   }
   ~Matrix()
   {
      deallocate();
   }
   double* operator [] (size_t idx)
   {
      return array_[idx];
   }
private:
   void swap(Matrix& rhs)
   {
      std::swap(rows_, rhs.rows_);
      std::swap(cols_, rhs.cols_);
      std::swap(array_, rhs.array_);
   }
   void allocate()
   {
      array_ = new double*[rows_];
      for (size_t i = 0; i < rows_; ++i)
      {
         array_[i] = new double[cols_];
         memset(array_[i], 0, cols_ * sizeof(double));
      }
   }
   void deallocate()
   {
      for (size_t i = 0; i < rows_; ++i)
      {
         delete[] array_[i];
      }
      delete[] array_;
   }
   size_t rows_, cols_;
   double** array_;
};
Вот оператор >> станет чуть сложнее просто потому что реаллокация будет происходить в НЕМ, во временные локальные массивы.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru