Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
3 / 3 / 2
Регистрация: 27.09.2009
Сообщений: 200
1

Удаление из вектора

22.01.2012, 18:48. Просмотров 1298. Ответов 1
Метки нет (Все метки)

1)В программе используется вектор которых хранит объекты некоторого класса, можно ли удалить из его середины(любого произвольного места) ячейку с объектом без использования итераторов ?
2)Если пункт 1 невозможен, то объясните пожалуйста как объявить этот самый итератор?
3)Каким образом происходит удаление из вектора при вызове метода erase?( т.е "сжимается ли вектор" или же просто ячейка зануляется?)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2012, 18:48
Ответы с готовыми решениями:

Удаление из вектора
#include<iostream> #include<vector> #include<algorithm> using namespace std; void print(vector...

Удаление указателей из вектора
Что то голова совсем не варит под вечер, подскажите, вот есть у меня вектор хранящий указатели на...

Удаление елементов вектора
никак не могу разобраться с итераторами: Мне нужно удалить элемент ветора, для этого я пользуюсь...

Удаление элементов из вектора
Всем привет, каким образом можно удалить элементы из вектора, не изобретая велосипеда? К примеру...

1
2551 / 1316 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.01.2012, 19:23 2
Лучший ответ Сообщение было отмечено xam max как решение

Решение

Цитата Сообщение от xam max Посмотреть сообщение
1)В программе используется вектор которых хранит объекты некоторого класса, можно ли удалить из его середины(любого произвольного места) ячейку с объектом без использования итераторов ?
2)Если пункт 1 невозможен, то объясните пожалуйста как объявить этот самый итератор?
C++
1
2
3
4
v.erase(v.begin() + 5);//На самом деле это и есть итератор. Так что совсем "без итератора" не получится
//or with iterator
std::vector<T>::iterator it = v.begin() + 5;//or some other
v.erase(it);
Добавлено через 26 минут
C++
1
2
3
4
5
6
7
8
erase(iterator __position)
{
    if (__position + 1 != end())
        _GLIBCXX_MOVE3(__position + 1, end(), __position);
    --this->_M_impl._M_finish;
    _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish);
    return __position;
}
Как видим, все элементы сдвигаются, и освобождается память из под последнего элемента. Скорее всего.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2012, 19:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Удаление элемента вектора
Приветствую пользователей форума. Возникает ошибка при попытке удаления элемента вектора. При...

Удаление из вектора по индексу
Добрий день, нуждаюсь в консультации. Пишу метод удаления из вектора по индексу, но наткнулся...

Удаление из двумерного вектора
Привет всем! у меня такой вопрос...создал двумерный вектор и хочу удалить i строку и i столбец...а...

Удаление элемента из вектора
Здорова! Пытаюсь удалить элемент из вектора, но чото ничего не получается от код: //My_filter...


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

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

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