listsstacksand queues looking ahead in an stl iterator requires an application of operator++which in turn advances the iterator in some cases looking at the next item in the listwithout advancing to itmay be preferable write the member function with the declaration const_iterator operator+int const to facilitate this in general case the binary operatorreturns an iterator that corresponds to positions ahead of current add the splice operation to the list class the method declaration void spliceiterator positionlist lst )removes all the items from lstplacing them prior to position in list *this lst and *this must be different lists your routine must run in constant time add reverse iterators to the stl list class implementation define reverse_iterator and const_reverse_iterator add the methods rbegin and rend to return appropriate reverse iterators representing the position prior to the endmarker and the position that is the header node reverse iterators internally reverse the meaning of the +and -operators you should be able to print list in reverse by using the code list::reverse_iterator itr rbegin)whileitr ! rendcout <*itr+<endl modify the list class to provide stringent iterator checking by using the ideas suggested at the end of section when an erase method is applied to listit invalidates any iterator that is referencing the removed node such an iterator is called stale describe an efficient algorithm that guarantees that any operation on stale iterator acts as though the iterator' current is nullptr note that there may be many stale iterators you must explain which classes need to be rewritten in order to implement your algorithm rewrite the list class without using header and tail nodes and describe the differences between the class and the class provided in section an alternative to the deletion strategy we have given is to use lazy deletion to delete an elementwe merely mark it deleted (using an extra bit fieldthe number of deleted and nondeleted elements in the list is kept as part of the data structure if there are as many deleted elements as nondeleted elementswe traverse the entire listperforming the standard deletion algorithm on all marked nodes list the advantages and disadvantages of lazy deletion write routines to implement the standard linked list operations using lazy deletion write program to check for balancing symbols in the following languagesa pascal (begin/end()[]{} +(/*/()[]{ explain how to print out an error message that is likely to reflect the probable cause