LINUX.ORG.RU

История изменений

Исправление victor79, (текущая версия) :

Поместить указатели на строки в вектор ( например vector<std::pair<char*,char*>>{{begin, end}, …} ), отсортировать вектор, заменить диапазоны через какой-нибудь std::swap_range?

Спасибо, похоже так и придется делать.

Я уже сделал итераторный вариант, но он не работает, т.к. std::sort хочет, что бы значение строки помещало в себя контент строки, а не только указатель. И без этого вот этот кусочек из нее ломается:

   typename iterator_traits<_RandomAccessIterator>::value_type
   __val = _GLIBCXX_MOVE(*__i);
   _GLIBCXX_MOVE_BACKWARD3(__first, __i, __i + 1);
   *__first = _GLIBCXX_MOVE(__val);

---

UPD: Да, этот вариант оказался предельно простым, и сделался за пару минут. Вместо заморочного итераторного.

Исходная версия victor79, :

Поместить указатели на строки в вектор ( например vector<std::pair<char*,char*>>{{begin, end}, …} ), отсортировать вектор, заменить диапазоны через какой-нибудь std::swap_range?

Спасибо, похоже так и придется делать.

Я уже сделал итераторный вариант, но он не работает, т.к. std::sort хочет, что бы значение строки помещало в себя контент строки, а не только указатель. И без этого вот этот кусочек из нее ломается:

   typename iterator_traits<_RandomAccessIterator>::value_type
   __val = _GLIBCXX_MOVE(*__i);
   _GLIBCXX_MOVE_BACKWARD3(__first, __i, __i + 1);
   *__first = _GLIBCXX_MOVE(__val);