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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Убрать нули после запятой http://www.cyberforum.ru/cpp-beginners/thread828681.html
Ребят помоги убрать ноли после запятой. Если введу 0,3000000000000000000000000000000000000000 то он пишет что больше 16 символов, а нужно чтобы отбросил нули и принял 0,3. Вот код: #include <iostream> #include <stdio.h> #include <conio.h> #include <locale.h> void d(char * s) { char * p = s;
C++ нужна рекомендация по программе Помогите пожалуйста создать блок-схему к программе просто нужно перевести какое то число в двоичную систему программа уже готова #include "stdafx.h" #include<iostream> #include<string.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread828677.html
C++ Выбор подходящего способа хранения\обработки данных
Здравствуйте! Передо мной встала задача выбора структуры данных, позволяющего хранить сортированные данные (в идеале позволяющая хранить пару ключ - значение) и и иметь возможность их добавления и удаления по минимуму нагружая процессор, так как добавляться и удаляться будут большие объемы данных. STD :: multimap не подошел, работает медленно, + очень много ресурсов уходит на динамическое...
C++ переделать из с++ в си
// Условие: Написать 3 функ-ии: // 1-ая: получает размерность массива, создает динамический массив и возвращает указатель на начало созданного массива. // 2-ая: получает адрес массива и его размерность и решает поставленную задачу. // 3-я: получает адрес массива и его размерность и освобождает память, занятую массивом. //Массив из M строк по N символов каждая. Необходимо вывести только те...
C++ лексический анализ дубль 2 http://www.cyberforum.ru/cpp-beginners/thread828654.html
у меня собственно говоря опять проблема. Лексический разбор многочлена. Только на этот раз я пошел другим путем. Вот что получилось. (код ниже). Вроде бы все работает, но если написать извращенный моном, то работать отказывается, точнее работает, но коряво. Нужен свежий взгляд на код. например такую строчку "-666x^2x^28xxxy^13yyyz^84zzz" разбирает хорошо, а вот такую...
C++ Не могу создать шаблон Здорова господа! Снова пытаюсь написать шаблон и сново программа не компилируется #include <iostream> using std::cout; using std::endl; template<typename C> class String { class Cref; подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.04.2013, 12:54     delete внутри класса для самого класса
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_;
};
Вот оператор >> станет чуть сложнее просто потому что реаллокация будет происходить в НЕМ, во временные локальные массивы.
 
Текущее время: 11:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru