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

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

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

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

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

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

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

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

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

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

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

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

10
Avazart
Эксперт С++
7417 / 5507 / 316
Регистрация: 10.12.2010
Сообщений: 24,596
Записей в блоге: 17
06.02.2013, 12:27 #2
Код приведите, а то как-то не понятно в чем проблема...
0
ijonhson
47 / 47 / 1
Регистрация: 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
Avazart
Эксперт С++
7417 / 5507 / 316
Регистрация: 10.12.2010
Сообщений: 24,596
Записей в блоге: 17
06.02.2013, 13:06 #4
Блин чего вы лезете в STL не зная основ ?

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

Добавлено через 42 секунды
Цитата Сообщение от ijonhson Посмотреть сообщение
C++
1
//это лишний мусор который будет висеть до завершения программы
С какой стати ?
0
ijonhson
47 / 47 / 1
Регистрация: 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
Avazart
Эксперт С++
7417 / 5507 / 316
Регистрация: 10.12.2010
Сообщений: 24,596
Записей в блоге: 17
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
ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
06.02.2013, 13:13  [ТС] #7
то что vector видно только в функции понятно но разве по завершении функции vector удаляется сам по себе? насколько я себе раньше представлял всё что создано статически живёт до конца выполнения программы
0
Avazart
Эксперт С++
7417 / 5507 / 316
Регистрация: 10.12.2010
Сообщений: 24,596
Записей в блоге: 17
06.02.2013, 13:16 #8
Цитата Сообщение от ijonhson Посмотреть сообщение
насколько я себе раньше представлял всё что создано статически живёт до конца выполнения программы
У вас глюки, курите мануалы, а не то что курите сейчас.
0
Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
06.02.2013, 15:08 #9
Цитата Сообщение от ijonhson Посмотреть сообщение
то что vector видно только в функции понятно но разве по завершении функции vector удаляется сам по себе? насколько я себе раньше представлял всё что создано статически живёт до конца выполнения программы
статически создано, это значит так:

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

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

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

Создайте в атрибутах класса(в секции private), например
C++
1
vector <vector<coord> > points;
вектор сам удалится когда уничтожится объект
0
go
Эксперт С++
3586 / 1366 / 129
Регистрация: 16.04.2009
Сообщений: 4,527
17.03.2013, 17:08 #11
Цитата Сообщение от ijonhson Посмотреть сообщение
насколько я себе раньше представлял всё что создано статически живёт до конца выполнения программы
Создается на стеке, потом стек чистится (вызываются деструкторы) и объекты уничтожаются.
Цитата Сообщение от XRuZzz Посмотреть сообщение
вектор сам удалится когда уничтожится объект
Вектор это класс. Мы создаем объект класса вектор(экземпляр). Когда стек чистится - он уничтожится.
0
17.03.2013, 17:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2013, 17:08
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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