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

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

Войти
Регистрация
Восстановить пароль
 
ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
#1

Динамически создать и удалить vector - C++

06.02.2013, 12:23. Просмотров 691. Ответов 10
Метки нет (Все метки)

Доброго времени суток у меня имеется двумерный vector объектов класса,добавляю туда элементы создавая одномерный veсtor и push_back к двумерному,добавление-отдельная функция которая может быть вызвана n-раз соответственоо одномерный вектор должен быть создан и удалён в пределах функции.
Подскажите синтаксис пошерстил по форуму вроде не поднимал никто такой вопрос
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2013, 12:23     Динамически создать и удалить vector
Посмотрите здесь:

динамически создать/удалить объекты класса (правильно сделал?) - C++
создал класс: myclass { } завел вектор, в котором будут храниться указатели на объекты данного класса: vector <myclass*> ob; ...

Структура "Vector": создать, удалить, прибавить - C++
Написать программу, которая содержит функции для работы с координатами: Функция create: принимает значения x, y и возвращает указатель на...

Удалить элемент из std::vector - C++
vector<int> k; надо удалить k элемент.

Как удалить себя из массива vector? - C++
class CTest { public: vector* v; void RemoveFromArray() { v->erase(this); //erase' : 2 overloads have no legal...

Как удалить последний элемент контейнера vector - C++
Доброго вечера всем!!!Подскажите пожалуйста как удалить последний элемент контейнера vector,уменьшив его длину тем самым на 1...

Можно ли удалить объект std::vector, а данные оставить? - C++
void fun(double *p) { std::vector<double> myvector (5); p=myvector.data(); return; } После выполнения p указывает...

Как удалить первые три элемента в std::vector? - C++
Добрый вечер! у меня есть вектор vector<MyClass> v; где MyClass - какой-либо мой класс, допустим вектор заполнен на 6 ячеек. Как...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
06.02.2013, 12:27     Динамически создать и удалить vector #2
Код приведите, а то как-то не понятно в чем проблема...
ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
06.02.2013, 13:02  [ТС]     Динамически создать и удалить vector #3
код черезчур длинноват попробую смысл передать
h.
C++
1
2
3
4
5
6
7
8
9
10
11
class coord
{
public:
int x1,y1,x2,y2;
coord(int,int,int,int);
};
class b
{
public:
void addfunc();
};
.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
vector <vector<coord> > points;
coord::coord(xl1,yl1,xl2,yl2)
{
x1=xl1;x2=xl2;y1=yl1;y2=yl2;
}
b::addfunc()
{
vector<coord> a;
a.push_back(coord(10,10,20,20));
a.push_back(coord(20,20,40,40));// и т.д.
points.push_back(a);// с этого момента а уже не нужен мало того  
}                          //это лишний мусор который будет висеть до завершения программы
Добавлено через 10 минут
то есть как грамотно удалить вектор и к какому классу относится vector?
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
06.02.2013, 13:06     Динамически создать и удалить vector #4
Блин чего вы лезете в STL не зная основ ?

Читайте про области видимости в C++, к примеру http://valera.asf.ru/cpp/book/c08.html.

Добавлено через 42 секунды
Цитата Сообщение от ijonhson Посмотреть сообщение
C++
1
//это лишний мусор который будет висеть до завершения программы
С какой стати ?
ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
06.02.2013, 13:08  [ТС]     Динамически создать и удалить vector #5
vector<coord> *a=new vector();
или vector<coord>* a=new vector<coord>();
или vector<coord>* a=new coord();
или другой вариант?
и потом
delete a; или как-то по другому
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
06.02.2013, 13:10     Динамически создать и удалить vector #6
Цитата Сообщение от ijonhson Посмотреть сообщение
vector<coord> *a=new vector();
или vector<coord>* a=new vector<coord>();
или vector<coord>* a=new coord();
или другой вариант?
и потом
delete a; или как-то по другому
Хватит быдлокодить, читайте книги...
ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
06.02.2013, 13:13  [ТС]     Динамически создать и удалить vector #7
то что vector видно только в функции понятно но разве по завершении функции vector удаляется сам по себе? насколько я себе раньше представлял всё что создано статически живёт до конца выполнения программы
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
06.02.2013, 13:16     Динамически создать и удалить vector #8
Цитата Сообщение от ijonhson Посмотреть сообщение
насколько я себе раньше представлял всё что создано статически живёт до конца выполнения программы
У вас глюки, курите мануалы, а не то что курите сейчас.
Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
06.02.2013, 15:08     Динамически создать и удалить vector #9
Цитата Сообщение от ijonhson Посмотреть сообщение
то что vector видно только в функции понятно но разве по завершении функции vector удаляется сам по себе? насколько я себе раньше представлял всё что создано статически живёт до конца выполнения программы
статически создано, это значит так:

C++
1
static vector<coord> a;
и да, оно будет жить до конца программы.

PS соглашусь с avazart'ом вам надо учить основы, а не векторы динамически создавать.
XRuZzz
Антикодер
659 / 560 / 27
Регистрация: 15.09.2012
Сообщений: 2,511
06.02.2013, 15:35     Динамически создать и удалить vector #10
пытайтесь избегать ситуаций когда приходится делать delete.

принцип простой - черный ящик. Подали на вход метода данные, получили результат на выходе.

Создайте в атрибутах класса(в секции private), например
C++
1
vector <vector<coord> > points;
вектор сам удалится когда уничтожится объект
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2013, 17:08     Динамически создать и удалить vector
Еще ссылки по теме:

Удалить первый совпадающий по значению элемент из std::vector - C++
Пояснение: дано допустим так: int i = 5; Нужно удалить из вектора vector&lt;int&gt; первый попавшийся элемент со значением 5. Сам уж себя в...

Удалить динамически выделенную память - C++
Получится ли освободить динамически выделенную память в интерфейсе одного класса, в интерфейсе другого класса, с условием что я использую...

Создать vector из объектов класса - C++
Добрый вечер! У меня есть некий класс SuperClass, в котором есть динамическое поле: class SuperClass { public: int *v; ...

создать класс шаблон Vector - C++
создать класс шаблон Vector, который отличается от класса Array тем , что в данном классе можно как добавлять элементы , так и удалять...

Не могу удалить динамически выделенную память под массив - C++
Здравствуйте. Изучил сегодня динамическое выделение памяти и не могу ее удалить. Подскажите где ошибка и, если возможно, объясните почему...


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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.03.2013, 17:08     Динамически создать и удалить vector #11
Цитата Сообщение от ijonhson Посмотреть сообщение
насколько я себе раньше представлял всё что создано статически живёт до конца выполнения программы
Создается на стеке, потом стек чистится (вызываются деструкторы) и объекты уничтожаются.
Цитата Сообщение от XRuZzz Посмотреть сообщение
вектор сам удалится когда уничтожится объект
Вектор это класс. Мы создаем объект класса вектор(экземпляр). Когда стек чистится - он уничтожится.
Yandex
Объявления
17.03.2013, 17:08     Динамически создать и удалить vector
Ответ Создать тему
Опции темы

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