If all the clients are serviced (removed from the lists) at the same rate, then round-robin scheduling is the obvious answer.
If, however, there's variability (e.g., you're simulating customers who take different lengths of time) you probably want something like a priority queue of collections, using the length of each collection as the priority. This will place the current highest priority item (shortest list) in a known location (usually the first item in the queue). After you insert a new item, you (potentially ) "sift" that down the heap to maintain the heap property.
This allows you to insert or remove an item with O(log N) complexity, where something like std::min_element would require O(N) complexity.
As an aside: if you care about speed, chances are pretty good that list isn't a great choice either. A list has individually allocated nodes, and each node contains two pointers. These factors tend to lead to poor locality of reference, which generally implies poor cache usage. A priority_queue of vectors instead (for only one possibility) will often work better.