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

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

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

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

26.07.2014, 23:04. Просмотров 486. Ответов 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 вариант?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2014, 23:04     Правильно ли в приведенном примере реализовано выделение и очищение памяти под двумерный вектор
Посмотрите здесь:
C++ Выделение памяти под двумерный массив
Выделение памяти под двумерный массив C++
Выделение памяти под двумерный массив С++ C++
Динамическое выделение памяти под двумерный массив C++
Динамическое выделение памяти под двумерный массив C++
C++ Динамическое выделение памяти под двумерный массив
C++ Выделение памяти под динамический двумерный массив в структуре
C++ Выделение и очищение памяти при работе с динамическими строками
Выделение памяти под массив в классе. Почему не могу правильно выделить? C++
Выделение памяти в функции на примере калькулятора C++
вектор и выделение памяти C++
Двумерный Массив,динамическое выделение памяти-ошибка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.07.2014, 23:32     Правильно ли в приведенном примере реализовано выделение и очищение памяти под двумерный вектор #2
Если используете std::vector, то ручная работа с выделением/освобождением памяти не нужна.
C++
1
std::vector<std::vector<int> > arr2d; // это есть вектор векторов целых, т.е. по сути двумерный вектор.
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));
  }
 
}
DrOffset
6913 / 4106 / 935
Регистрация: 30.01.2014
Сообщений: 6,904
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))
  {}
};
и все.
Yandex
Объявления
26.07.2014, 23:39     Правильно ли в приведенном примере реализовано выделение и очищение памяти под двумерный вектор
Ответ Создать тему
Опции темы

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