#include <list>
#include <iostream>
#include <sstream>
#include <iterator>
#include <string>

std::list<std::list<std::string>> split(const std::list<std::string>& bulk)
{
    std::list<std::list<std::string>> splitdata;
    for(auto& str: bulk)
    {
        std::istringstream buf(str);
        splitdata.emplace_back(
             std::istream_iterator<std::string>(buf),
             std::istream_iterator<std::string>());
    }
    return splitdata;
}

int main()
{
    std::list<std::string> in = {"this is an example", "this is another"};
    std::list<std::list<std::string>> out = split(in);
    for(auto& row: out) {
        for(auto& str: row)
           std::cout << "'" << str << "' ";
       std::cout << '\n';
    }
}
