2) typename нужно писать, поскольку ConstIterator - есть некий вложенный идентификатор и без typename нельзя было бы создать объект it:
Хм... а на MSVC 2008 проходит и без typename (недавно переносил код с Вындоуз на gcc и понадобилось добавить)
1)Почему QMap задом наперёд.. Не знаю, есть ли в этом какой-нить сокральный смысл, нужно смотреть реализацию QDataStream. Возможно это и не спроста)
QDataStream смотреть не нужно
If the map contains multiple items with key key, this function returns an iterator that points to the most recently inserted value. The other values are accessible by incrementing the iterator.