Given a sequence of N elements (say std::vector or T*), is there any efficient way to iterate over its elements in random order, visiting each element exactly once. The solution must avoid creating additional array with shuffled indices.
EDIT:
Also we need to be able to track original indices