Такой вопрос, нужно сделать в шарагу сортировку списков. К примеру классика, сортировка пузырьком, но что бы сортировать пузырьком, нужно уметь обратится к коллекции по индексу, а к list такое не прокатит. Следовательно у меня 2 вопроса:
1. Есть ли специальные модификации алгоритмов сортировки пузырьком, вставками, поиском для типа данных список?
2. Если нет и это полнейший бред, то как обращаться к списку, а конкретно list в C++ по индексу?
Мне сразу пришло в голову просто наследоваться от лист и переопределить там оператор взятия по индексу:
template <class T>
class mylist : public list<T>
{
public:
T operator[](int index)
{
mylist<T>::iterator im;
for (im = this->begin(), int i = 0; i < index; i++)
{
im++;
if (im == this->end())
{
break;
}
}
return im;
}
};
Но тут возникает конфликт при выводе:
mylist<int> *lk = new mylist<int>();
for (int i = 0; i < 10; i++)
{
lk->insert(lk->begin(), i);
}
cout << &lk[3] << endl;
Но выводит я так понимаю, оно адрес ячейки памяти (собственно говоря, я понимаю почему если смотреть только на '&', но если учесть, что по идее возвращается итератор, не представляю как это вообще работает), вопрос теперь, как эту всю красоту переработать, так как без операции взятия адреса эта гадость не хочет работать и выплёвывает: E0349 и C2679.
Благодарю за помощь.