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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> operator+= в std::map 
:(
    Опции темы
segmentation_fault
Дата 28.4.2005, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброе время суток.
Проблема такая.
Имеется iterator для std::map. Его нужно передвинуть на n*2-2 позиции вперед (где н является int). Я сначала пробовал вот так:
Код

std::map<Lit, std::vector<Index> >::iterator mapfill;
mapfill = indices.begin();
mapfill += n*2-2;

Компилятор ругается
Потом вот так, с использованием size_type
Код

std::map<Lit, std::vector<Index> >::iterator mapfill;
mapfill = indices.begin();
mapfill += (std::map<Lit, std::vector<Index> >::size_type)n*2-2;

И так
Код

std::map<Lit, std::vector<Index> >::iterator mapfill;
mapfill = indices.begin();
std::map<Lit, std::vector<Index> >::size_type st;
st = n*2-2;
mapfill += st;

Все равно ругается
Цитата

216: no match for '__rb_tree_iterator    ...       >& += size_t &'

Я так думаю что оператор+= в std::map::iterator должен быть, так что что я делаю неправильно?

Компилятор gcc 2.91

Это сообщение отредактировал(а) segmentation_fault - 29.4.2005, 03:10
PM MAIL   Вверх
Void
Дата 29.4.2005, 05:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(segmentation_fault @ 29.4.2005, 01:51)
Я так думаю что оператор+= в std::map::iterator должен быть, так что что я делаю неправильно?

Не должен. Итераторы в std::map являются bidirectional, т.е. поддерживают только операции инкремента и декремента. Решение проблемы: std::advance:
Код

std::advance(mapfill, n * 2 - 2);



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
segmentation_fault
Дата 29.4.2005, 05:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Void, спасибо
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.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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