Hi JoaquĆn, first of all thanks for your answers. I find your replies always very helpful :) I think I've understood what you mean. Just let me recap to see if I got it right. 1. There are two ways to make sure a modification with traversal is successful: 2. I can traverse an index (hashed or ordered, it does not matter) to modify() all the elements of the container if I am sure that the modification does not change the representation of the elements with respect to the index I'm traversing on. 2a. For example, I can use the hashed index for traversing whenever I'm sure that the modifications won't change the hash value of the elements. 2b. Or I can use an ordered index whenever I'm sure that the modification does not change the position of the element in the binary search tree. 3. I can also traverse and modify an ordered index from top to bottom if I'm consistently modifying each element to place itself _higher_ in the tree than it was before. In the opposite way I can traverse bottom to top if I'm consistently modifying the element to be _lower_ in the tree. So, in my case I was using an hashed index traversal while I was changing the hash values. It's a no-go. However I also have an ordered index already defined, and the modification I want to do does not change the ordering of elements. Hence the use of a sorted index for this purpose is safe. Does this make sense? :) Thanks again, Francesco