For such C++ STLs associative containers like std::set, std::multiset, std::map or std::multimap iterators.
How iteratorName++/iteratorName-- works?
Does each element have 2 pointers for the very less/more than itself? If so, how does it keep such information?
Does it take O(1), amortized or logarithmic time?
And aside question, how begin() method works? Is it considered with each insertion/removal?
The C++ language doesn't specify how the containers are implemented.
In practice, the sorted associative containers are implemented as red-black trees. I'll show one implementation as an example. Libstdc++ map iterator contains a pointer to a tree node. Here is how increment is implemented (modified by me for readability):
All iterator operations are required to be amortized O(1). The worst case non-amortized complexity of the shown implementation is logarithmic.
As you've now learned that you can just read the implementation, I'll leave this as an exercise to the reader to find out.