То есть хочу чтобы работал следующий код
list<ILXListItem>::iterator it;
it = it + 5;
Сделать перегрузку тривиально, но где это записать и как етим правильно пользоваться?..
list<ILXListItem>::iterator it;
it = it + 5;
// Ну, перегрузка тривиальна - сам говоришь...Все-таки тебе либо не нужен list (точнее, нужен НЕ list), либо не надо перегружать подобным образом его итератор...
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;
}
}
...(тестировалось на том же списке целых), не перегружая операторы сложения для итераторов...
public:
void erase_element(int index) {
list<int>::iterator it = begin();
for(; index; --index) ++it;
erase(it);
}
...
...(тестировалось на том же списке целых), не перегружая операторы сложения для итераторов...
public:
void erase_element(int index) {
list<int>::iterator it = begin();
for(; index; --index) ++it;
erase(it);
}
...
class TMyList: public list<int>?
{
// ...
friend
TMyList::iterator&
operator + (TMyList::iterator &it, int index) {
for(; index; --index) ++it;
return it;
}
public:
void erase_element(int index) {
list<int>::iterator it = begin();
erase(it + index);
}
// ...
};
...
friend
TMyList::iterator& //А что означает здесь &?
operator + (TMyList::iterator &it, int index) {
for(; index; --index) ++it;
return it;
...
list<ILXListItem*>::iterator&
list<ILXListItem*>::iterator&