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

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

Войти
Регистрация
Восстановить пароль
 
vdvoid
3 / 3 / 0
Регистрация: 26.02.2011
Сообщений: 99
#1

Удаление элементов вектора - C++

24.03.2013, 21:49. Просмотров 700. Ответов 4
Метки нет (Все метки)

как вызвать деструктор? почему не удаляется объект
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class a {
public:
    a() {
        std::cout << "c";
    }
    ~a() {
        std::cout << "d";
    };
};
int main() {
std::vector<a*> b;
b.push_back(new a);
b.erase(b.begin());
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2013, 21:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление элементов вектора (C++):

Удаление элементов вектора - C++
Я конечно понимаю, что вектор это такая штука, которая удаляется сама при выходе из функции в которой она определена. Но мне все же...

Удаление элементов вектора - C++
Дана матрица смежности, мне нужно удалить из нее вершину. Это значит, что при удалении вершины номер 3 мне нужно из матрицы удалить 3...

Удаление элементов из вектора - C++
Что я делаю не так string f=&quot;/.+(STL).$1/&quot;; vector&lt;string&gt; words; words.push_back(f); vector&lt; string &gt;::iterator first =...

Удаление элементов из вектора - C++
С консоли вводится вектор значений double и точность, удалить и вектора элементы разность между которыми по модулю меньше точности и...

Удаление из вектора повторяющихся элементов - C++
есть вектор vector&lt;int&gt; array; я считаю в него из файла, подскажите как мне удалить одинаковые цифры, то есть если есть 10 и 10 должно...

Удаление элементов вектора со сдвигом - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;vector&gt; #include &lt;string&gt; using namespace std; void spc(int x); class...

4
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,796
Записей в блоге: 17
24.03.2013, 21:58 #2
C++
1
2
3
4
5
6
std::vector<a*> b;
b.push_back(new a);
 
std::vector<a*>::iterator first = b.begin() ;
delete *first;  // Удаляем  сам объект класса
b.erase(first);//  Удаляем указатель на объект из вектора
1
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
24.03.2013, 21:58 #3
При удалении указателя исходный объект остаётся, естественно, нетронутым - это же обычный указатель. В данном случае необходимо вызвать delete b.front(); перед вызовом erase. Если есть поддержка C++11, то надо пользоваться владеющими указателями, чтобы не морочить себе голову с удалением вручную:
C++
1
std::vector<std::unique_ptr<a>> b;
.
1
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,796
Записей в блоге: 17
24.03.2013, 22:51 #4
Цитата Сообщение от Nick Alte Посмотреть сообщение
std::unique_ptr<a>
А разве unique_ptr копируемый ?
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.03.2013, 22:56 #5
Цитата Сообщение от Avazart Посмотреть сообщение
А разве unique_ptr копируемый ?
перемещаемый
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2013, 22:56
Привет! Вот еще темы с ответами:

Удаление одинаковых элементов вектора - C++
Здравствуйте. Нужно удалить из вектора одинаковые элементы. Вектор состоит из стрингов и это надо делать без сортировки.

Удаление всех элементов вектора - C++
Как удалить все элементы вектора. Например Создаём пустой вектор vector&lt;int&gt;numb; заполняем его пятью элементами ...

Массив и Удаление элементов вектора - C++
1)Найти произведение элементов, расположенных между первым и вторым нулевым элементами. 2)Удалить из массива элемент, расположенный после...

Удаление одинаковых элементов из вектора <string> - C++
# include &lt;iostream&gt; # include &lt;vector&gt; # include &lt;iterator&gt; # include &lt;string&gt; # include &lt;fstream&gt; # include &lt;cstdio&gt; #...


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

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

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