Вы уверены, что ошибка во время сортировки происходит? Покажите код наполнения Str данными. У меня во время наполнения отъедает 1.5 Гб, сама сортировка не выделяет памяти.
Whiteha: не уверен, что есть, что тут специально оговаривать. i в функции f - это lvalue (а уж ссылка или нет - дело десятое), а значит можно создать на него lvalue reference.
Алексей Медведев: я вижу, что в первом условии вы по факту проверяете делимость i на number, во втором - делимость на i - 1 (т.е. остаток - 1), в третьем i - 2 и так далее, что можно проверять при помощи операции взятия остатка: i % number == остаток
Если данные именно такие, то почему бы просто не сплитнуть по переносу строки, взять первую строку и регексом вытащить то, что внутри скобок из второй?
FarmaCeduS: а что именно непонятно? Сначала я просто узнаю размер файла, затем resize'ом выделяю достаточную память, затем читаю весь файл.
out_it - это специальный итератор, который пишет в выходной поток, в нашем случае - в файл out.
Ну и по этому итератору я копирую все данные из массива. Но чтобы копировать в обратном порядке, я использую не пару итераторов begin/end, а пару rbegin/rend, которая пробегает контейнер в обратном направлении.
samarkad33: (Movie <$> (movieValue .: "id")) <*> (movieValue .: "title")
Скобки ставятся так. Что именно будет вычисляться первым у оператора <*> - зависит от реализации. В нашем случае это левая часть, а чтобы вычислить её, надо вычислить movieValue .: "id", поэтому оно идёт первым.
samarkad33: я был не в России, чтобы по первому зову отвечать вам, по первому абзацу должен быть очевиден приоритет операций (а не порядок вычисления, это разные вещи)