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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Igor Fender
1 / 1 / 0
Регистрация: 09.07.2014
Сообщений: 167
#1

Правильно ли в приведенном примере реализовано выделение и очищение памяти под двумерный вектор - C++

26.07.2014, 23:04. Просмотров 530. Ответов 3
Метки нет (Все метки)

Скажите правильно ли я выделяю и очищаю память под двухмерный вектор

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A
{
private: 
  std::vector< std::vector<int> >*  vec;
 
public:
  A()
  {
     vec = new std::vector< std::vector<int> >(10, std::vector<int>(10, 0));
  }
 
  ~A()
  {
    delete vec;
  }
}
Не будет ли здесь каких либо утечек?
Или как удобнее хранить вектор, если мне в конструкторе передаются размер и только тогда он заполняется.
Писал так, но у меня появляются сомнения, правильно ли это:

C++
1
2
3
4
5
6
  std::vector< std::vector<int> >  vec;
 
  A()
  {
     vec =  std::vector< std::vector<int> >(10, std::vector<int>(10, 0));
  }
Как лучше в таком случае хранить двухмерный вектор??


1) std::vector< std::vector<int> >
2) std::vector< std::vector<int> >*
3) std::vector< std::vector<int>* >*

Еще не пойму, что выгоднее 2 и 3 вариант?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2014, 23:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Правильно ли в приведенном примере реализовано выделение и очищение памяти под двумерный вектор (C++):

Выделение памяти под двумерный массив С++ - C++
Гуру С++, подскажите новичку, как обратиться к элементу при следующем выделении памяти? 1)double **matr = new double * 2)double *matr...

Выделение памяти под двумерный массив - C++
Доброе время ! Проблема такая : препод задал задачу сортировки массива произвольного типа(char* int* или double*) и сказал, чтобы любой тип...

Выделение памяти под двумерный массив - C++
Нужна прога на с++,в которой бы выделялась память для двумерного массива N строк такого вида,как на рисунке&gt;&gt;&gt; За ранее спасибо:)

Динамическое выделение памяти под двумерный массив - C++
1) Ввести построчно элементы двумерного массива чисел. Количество столбцов задается. Количество строк (не менее 1) равно максимальному по...

Динамическое выделение памяти под двумерный массив - C++
Нужно написать программу, динамически выделяем память под двумерный массив, функции ввода-вывода, функцию, которая будет складывать 2...

Динамическое выделение памяти под двумерный массив - C++
Здравствуйте. Как мне правильно и грамотно (!) выделять память под двумерные массивы? Откуда возникла необходимость — хотел сделать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.07.2014, 23:32 #2
Если используете std::vector, то ручная работа с выделением/освобождением памяти не нужна.
C++
1
std::vector<std::vector<int> > arr2d; // это есть вектор векторов целых, т.е. по сути двумерный вектор.
0
Igor Fender
1 / 1 / 0
Регистрация: 09.07.2014
Сообщений: 167
26.07.2014, 23:36  [ТС] #3
То есть такой способ подойдет??

C++
1
2
3
4
5
6
7
8
9
10
11
12
class A
{
private: 
  std::vector< std::vector<int> >  vec;
 
public:
  A(int width, int height)
  {
     vec = new std::vector< std::vector<int> >(width, std::vector<int>(height, 0));
  }
 
}
0
DrOffset
7154 / 4295 / 969
Регистрация: 30.01.2014
Сообщений: 7,099
26.07.2014, 23:39 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Igor Fender Посмотреть сообщение
То есть такой способ подойдет??
Зачем тебе вообще тут new?

Добавлено через 52 секунды
C++
1
2
3
4
5
6
7
8
9
10
class A
{
private: 
  std::vector< std::vector<int> >  vec;
 
public:
  A(int width, int height)
     : vec(width, std::vector<int>(height, 0))
  {}
};
и все.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2014, 23:39
Привет! Вот еще темы с ответами:

Выделение памяти под динамический двумерный массив в структуре - C++
Доброво времени суток, дорогие товарищи-кодеры! Работав проектом, столкнулся с тем что удобно было бы запилить двумерный динамик в...

Выделение и очищение памяти при работе с динамическими строками - C++
Всем Доброго времени суток! Пожалуйста укажите на ошибку! #ifndef RECEIPT_H #define RECEIPT_H #include &lt;iostream&gt; using...

Выделение памяти под массив в классе. Почему не могу правильно выделить? - C++
Все привет! не могу понять почему в классе не получается выделить память из стека для массива. Есть класс: Надо чтоб конструктор класса...

Выделение памяти в функции на примере калькулятора - C++
#include &quot;stdafx.h&quot; #include &quot;std_lib_facilities.h&quot; #include &quot;windows.h&quot; //------------------------------------------------- class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.07.2014, 23:39
Ответ Создать тему
Опции темы

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