Waxing philosophic here for a sec, I'm always of the opinion that you should define your own data-structure (class), even if the underlying representation is (say, for the moment, at least), "an array." Likewise, if you need an iterator that runs backwards, coin one and put it into the class. Put all of the logic that anyone, anywhere, uses, right there into that class ... so that, when looking just at the definition of the class, you know that you're looking at what "everyone, everywhere" is using to get to that data and to do everything that need be done to it. If later on you decide a more sophisticated data structure needs to be "dropped in," you only have to "drop it in" once.