IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Builder 6.0, Итераторы
сообщение
Сообщение #1


Fanat
***

Группа: Пользователи
Сообщений: 261
Пол: Мужской
Реальное имя: Сергей

Репутация: -  5  +


Как перегрузить opertor+ для итератора list<MyClass>::iterator?..
То есть хочу чтобы работал следующий код

list<ILXListItem>::iterator it;
it = it + 5;


Сделать перегрузку тривиально, но где это записать и как етим правильно пользоваться?..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Ну, ладно еще перегрузка операции для итератора, но почему list? У него же нет рандомного доступа... У vector-а есть... Вот смотри:

// Ну, перегрузка тривиальна - сам говоришь...
list<int>::iterator& operator += (list<int>::iterator &it, int value)
{
for(int i = 0; i < value; i++) ++it;
return it;
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
// Заполнили список для теста
list<int> myList;
for(int i = 0; i < 60; ++i) {
myList.push_back(i);
}

// А теперь - внимание: вот так сделать не получится !!!
// именно по причине отсутствия рандомного доступа
/*
for(list<int>::iterator it = myList.begin();
it < myList.end(); it += 5) {
// ...
}
*/

// вот __бредовый__ пример, показывающий, что перегрузка работает...
list<int>::iterator it = myList.begin();
for(int i = 0; i < 5; i++) {
Memo2->Lines->Add(IntToStr(*it));
it += 5;
}
}

Все-таки тебе либо не нужен list (точнее, нужен НЕ list), либо не надо перегружать подобным образом его итератор...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Fanat
***

Группа: Пользователи
Сообщений: 261
Пол: Мужской
Реальное имя: Сергей

Репутация: -  5  +


Мне нужно реализовать класс-обёртку для листа...и среди функций этого класса есть вставка элемента в задданое место и удаление элемента с заданного места...и это место задаётся индексом...а для этого мне кажется необходимо сдвинуть итератор на заданный индекс...Может я в чем то ошибаюсь?..или это можно сделать легче?..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 20:03
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name