Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
1

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

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

Author24 — интернет-сервис помощи студентам
Доброго времени суток у меня имеется двумерный vector объектов класса,добавляю туда элементы создавая одномерный veсtor и push_back к двумерному,добавление-отдельная функция которая может быть вызвана n-раз соответственоо одномерный вектор должен быть создан и удалён в пределах функции.
Подскажите синтаксис пошерстил по форуму вроде не поднимал никто такой вопрос
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2013, 12:23
Ответы с готовыми решениями:

динамически создать/удалить объекты класса (правильно сделал?)
создал класс: myclass { } завел вектор, в котором будут храниться указатели на объекты данного...

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

Как динамически создать массив из динамически конструируемых экземпляров класса?
Есть два класса.Подразумевается ,что первый в конструкторе выделяет интовый массив длинной n,второй...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же...

10
Эксперт С++
8482 / 6149 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.02.2013, 12:27 2
Код приведите, а то как-то не понятно в чем проблема...
0
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
06.02.2013, 13:02  [ТС] 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?
1
Эксперт С++
8482 / 6149 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.02.2013, 13:06 4
Блин чего вы лезете в STL не зная основ ?

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

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

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

PS соглашусь с avazart'ом вам надо учить основы, а не векторы динамически создавать.
1
Антикодер
1887 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
06.02.2013, 15:35 10
пытайтесь избегать ситуаций когда приходится делать delete.

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

Создайте в атрибутах класса(в секции private), например
C++
1
vector <vector<coord> > points;
вектор сам удалится когда уничтожится объект
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
17.03.2013, 17:08 11
Цитата Сообщение от ijonhson Посмотреть сообщение
насколько я себе раньше представлял всё что создано статически живёт до конца выполнения программы
Создается на стеке, потом стек чистится (вызываются деструкторы) и объекты уничтожаются.
Цитата Сообщение от XRuZzz Посмотреть сообщение
вектор сам удалится когда уничтожится объект
Вектор это класс. Мы создаем объект класса вектор(экземпляр). Когда стек чистится - он уничтожится.
0
17.03.2013, 17:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2013, 17:08
Помогаю со студенческими работами здесь

Удалить элемент из std::vector
vector&lt;int&gt; k; надо удалить k элемент.

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

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

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt;...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru