Given a sequence (for example a string “Xa”), I want to get the next prefix in order lexicographic (i.e “Xb”). The next of “aZ” should be “b”
A motivating use case where this function is useful is described here.
As I don’t want to reinvent the wheel, I’m wondering if there is any function in C++ STL or boost that can help to define this generic function easily?
If not, do you think that this function can be useful?
Notes
- Even if the examples are strings, the function should work for any Sequence.
- The lexicographic order should be a template parameter of the function.
From the answers I conclude that there is nothing on C++/Boost that can help to define this generic function easily and also that this function is too specific to be proposed for free. I will implement a generic next_prefix and after that I will request if you find it useful.
I have accepted the single answer that gives some hints on how to do that even if the proposed implementation is not generic.
I’m not sure I understand the semantics by which you wish the string to transform, but maybe something like the following can be a starting point for you. The code will increment the sequence, as if it was a sequence of digits representing a number.
Maybe you wish to add an overload with a function object, or an overload or specialization for primitives. A couple of examples: