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

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

Войти
Регистрация
Восстановить пароль
 
xam max
3 / 3 / 0
Регистрация: 27.09.2009
Сообщений: 200
#1

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

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

1)В программе используется вектор которых хранит объекты некоторого класса, можно ли удалить из его середины(любого произвольного места) ячейку с объектом без использования итераторов ?
2)Если пункт 1 невозможен, то объясните пожалуйста как объявить этот самый итератор?
3)Каким образом происходит удаление из вектора при вызове метода erase?( т.е "сжимается ли вектор" или же просто ячейка зануляется?)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2012, 18:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление из вектора (C++):

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

Удаление пробела из вектора - C++
Доброго времени суток! Стоит задача: удалить все пробелы из вектора. Собственно программа не видит пробелы,вот код: #include...

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

Удаление объекта из вектора - C++
Как удалить объект из вектора в таком случае: Main *mn = new Main(wd,100,100); objArray.push_back(*mn);

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

Удаление элемента из вектора - C++
Здорова! Пытаюсь удалить элемент из вектора, но чото ничего не получается от код: //My_filter f(cin,cout); vector<int> v(3,4);...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.01.2012, 19:23 #2
Цитата Сообщение от 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;
}
Как видим, все элементы сдвигаются, и освобождается память из под последнего элемента. Скорее всего.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2012, 19:23
Привет! Вот еще темы с ответами:

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

Удаление элемента из вектора - C++
Вектор состоит из объектов класса schedule, требуется удалить элементы, где base.group = gr, программа вылетает на этом месте, помогите,...

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

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


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

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

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