I was looking through the standard library for a good way to split a range into several ranges based on value changes in the stream: AAAAAAABBBBBB would be split on the AB transition into: AAAAAAA BBBBBB I just couldn't figure out an elegant way to do it? Any ideas?