Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление элемента std::vector? 
V
    Опции темы
Alca
Дата 22.10.2009, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Как можно удалить элемент std::vector-а с определенным индексом?
Код

// удалить 6-ой элемент
myvector.erase (myvector.begin() + 5);
myvector.erase (&myvector.at(5));    //так можно?



--------------------
PM WWW ICQ Skype Jabber   Вверх
Andrey44
Дата 22.10.2009, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



Цитата(Alca @  22.10.2009,  11:12 Найти цитируемый пост)
так можно?
Ну а почему нет?



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Annihilator
Дата 22.10.2009, 11:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: 1
Всего: 3



Используй первый вариант.
Второй некорректен. at() возвращает ссылку, а erase() принимает итератор.


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Alca
Дата 22.10.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Спасибо.


--------------------
PM WWW ICQ Skype Jabber   Вверх
azesmcar
Дата 22.10.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Alca @  22.10.2009,  11:12 Найти цитируемый пост)
Как можно удалить элемент std::vector-а с определенным индексом?

Если возникла такая необходимость стоит хорошенько подумать над выбором контейнера.
PM   Вверх
Alca
Дата 22.10.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

Если возникла такая необходимость стоит хорошенько подумать над выбором контейнера.

я ЗНАЮ, что есть std::list


--------------------
PM WWW ICQ Skype Jabber   Вверх
azesmcar
Дата 22.10.2009, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Alca @  22.10.2009,  12:55 Найти цитируемый пост)
я ЗНАЮ, что есть std::list 

А еще есть std::map, в любом случае надо учитывать что удаление из vector довольно тяжелая операция
Цитата

Complexity: The destructor of T is called the number of times equal to the number of the elements erased,
but the assignment operator of T is called the number of times equal to the number of elements in the
vector after the erased elements.

конечно, есть такое слово как надо, но задуматься стоит.
PM   Вверх
zim22
Дата 23.10.2009, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(azesmcar @  22.10.2009,  12:59 Найти цитируемый пост)
но задуматься стоит.

можно элемент не удалять, а присваивать ему сигнальное значение, а потом эти элементы просто не учитывать в операциях.

Это сообщение отредактировал(а) zim22 - 23.10.2009, 12:01


--------------------
PM MAIL   Вверх
azesmcar
Дата 23.10.2009, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(zim22 @  23.10.2009,  12:00 Найти цитируемый пост)
можно элемент не удалять, а присваивать ему сигнальное значение, а потом эти элементы просто не учитывать в операциях.

Можно, но не всегда возможно, это реально в частных случаях, когда есть гарантия (теоретическая или практическая - кому как удобно) что некое значение в вектор никогда не попадет. Ну а вообще тут говорилось про erase. 
PM   Вверх
zim22
Дата 23.10.2009, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(azesmcar @  23.10.2009,  12:05 Найти цитируемый пост)
Ну а вообще тут говорилось про erase. 

лучше бы тут говорилось про количество элементов в векторе.... тогда можно было бы дать более "точечный" совет.

Это сообщение отредактировал(а) zim22 - 23.10.2009, 12:41


--------------------
PM MAIL   Вверх
Alca
Дата 23.10.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

лучше бы тут говорилось про количество элементов в векторе...

Ну скажем в среднем 50 элементов.


--------------------
PM WWW ICQ Skype Jabber   Вверх
zim22
Дата 23.10.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



если быстродействие erase устраивает, то пусть он и будет. 


--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0660 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.