Я хотел бы объединить диапазоны, возвращаемые функцией в один большой range.Consider следующего кода:добавляющих диапазоны в петле
some_type_i_cant_figure_out bar() {
typedef std::vector<int>::const_iterator iter;
std::vector<int> aaa;
/* fill some data into aaa*/
some_type_i_cant_figure_out cc;
for (int i = 0; i < aaa.size(); ++i) {
std::pair<iter, iter> bbb = foo(aaa, i);
ccc = boost::join(ccc, bbb);
}
return ccc;
}
То, что я пытаюсь достичь:
Вектор ааа огромен и Foo может возвращают довольно большие диапазоны. Конечно, я могу просто создать копии всех элементов в диапазоне в новый вектор целых чисел и вернуть его. Он неэффективен, тратит память и время. Поэтому я хотел бы вернуть один boost :: join_range. В худшем случае, я могу жить с вектором диапазонов, но это было бы слишком просто и не так элегантно :) Кроме того, join_range isnt default constructible (что является проблематичным для реализации этого примера), каков будет тип возвращаемого значения? тип переменной temp (ccc) и каков был бы правильный и элегантный способ достижения вышеуказанного?
Является ли размер 'aaa' известно, что вы пытаетесь достичь (или ограничены?)? Похоже, вы _just_ stable-sorting vector ... – sehe
размер неизвестен. меняя пример, чтобы сделать его более ясным – kreuzerkrieg