cont/forwardlistsplice1.cpp

The following code example is taken from the book
The C++ Standard Library - A Tutorial and Reference, 2nd Edition
by Nicolai M. Josuttis, Addison Wesley Longman, 2012
Copyright © 2012 by Pearson Education, Inc. and Nicolai M. Josuttis


#include <forward_list>
#include "print.hpp"
using namespace std;

int main()
{
    forward_list<int> l1 = { 1, 2, 3, 4, 5 };
    forward_list<int> l2 = { 97, 98, 99 };
    
    // find 3 in l1
    auto pos1=l1.before_begin();
    for (auto pb1=l1.begin(); pb1 != l1.end(); ++pb1, ++pos1) {
         if (*pb1 == 3) {
             break;  // found
         }
    }
    
    // find 99 in l2
    auto pos2=l2.before_begin();
    for (auto pb2=l2.begin(); pb2 != l2.end(); ++pb2, ++pos2) {
         if (*pb2 == 99) {
             break;  // found
         }
    }

    // splice 3 from l1 to l2 before 99
    l1.splice_after(pos2, l2,  // destination
                    pos1);     // source

    PRINT_ELEMENTS(l1,"l1: ");
    PRINT_ELEMENTS(l2,"l2: ");
}