fix bug in common::Range

main
feixyz10 2021-04-28 19:58:56 +08:00 committed by feixyz
parent 59fcc3ce32
commit d66f5dc07e
1 changed files with 7 additions and 3 deletions

View File

@ -19,11 +19,15 @@ double Rad2Degree(double rad) {
const std::vector<int> Range(int begin, int end, int step) { const std::vector<int> Range(int begin, int end, int step) {
ACHECK(step != 0) << "Step must be non-zero"; ACHECK(step != 0) << "Step must be non-zero";
int num = (end - begin) / step; int sign = step < 0 ? -1 : 1;
int num = (end - begin - sign) / step + 1;
if (num <= 0) return {}; if (num <= 0) return {};
end = begin + step * num;
std::vector<int> seq(num); std::vector<int> seq(num);
for (int i = begin; i != end; i += step) seq[i] = i; int b = begin;
for (int i = 0; i != num; ++i) {
seq[i] = b;
b += step;
}
return seq; return seq;
} }