Как сделать сращивание диапазона в постоянное время с std :: forward_list?

Я хочу соединить диапазон[first, last]с обоими конечными точками включительно. У меня есть итераторы к элементудо first и кlast, Я мог бы сделать это сsplice_after() но только в линейном времени.

Я верю, что это соединение может быть сделано в постоянное время. Как я могу это сделать?std::forward_list

Если вопрос не ясен, вот пример кода, показывающего мою проблему:

Код наLive Work Space

#include 
#include 
#include 
#include 
using namespace std;

int main() {   
    forward_list trg{'a','b','c'};
    forward_list src{'1','2','3','4'};

    auto before_first = src.begin();
    auto last = find(src.begin(), src.end(), '4');
    cout < "before_first = " < *before_first < ", last = " < *last < "\n";

    // trg.splice(trg.begin(), src, before_first, last); // no such splice
    auto end = last;
    ++end; // Ouch! splice has to find last again although I already had it  :(
    trg.splice_after(trg.begin(), src, before_first, end);

    cout < "Target after splice:\n";
    copy(trg.begin(), trg.end(), ostream_iterator

Ответы на вопрос(1)

Ваш ответ на вопрос