I create a map:
map<string, string> cuts;
cuts["cutb"] = "a>1";
cuts["cuta"] = "b>3";
cuts["cutc"] = "c<5";
When I iterate over this map with map<string, string>::iterator itr = cuts.begin(); it gets ordered alphabetically: cuta, cutb, cutc, etc.
How do I force the iterator to follow the order in which I’ve defined the elements i.e. cutb, cuta, cutc?
You need to use some other implementation of the data structure. The red-black tree implementation will not do for you in your case.
Looking at it from more general perspective: why you need to create a map if you traverse the entries in order of addition? Won’t list/array/vector of pairs suffice for you?
EDIT: Tip: whenever you choose to use a specific data structure ask yourself what exactly operations you need it to support. After answering that, you should be able to choose more precisely. Map is good if you need to find by key, insert by key and to check if a certain key exists. However, the price you will pay in the implementations that optimise those operations is usually that you lose the order of insertion of the elements.
EDIT2: looping through list of pairs:
Iterating in vector can also be done using iterators, but I like the index approach more, as it is just as optimal, but easier to understand.