Как сместить интервал при использовании библиотеки контейнеров интервала C ++ Boost (ICL)?

Как сдвинуть discrete_interval с использованием библиотеки контейнеров интервала Boost?

т.е. я хочу вычесть целое число c из нижнего () интервала и из верхнего () интервала? Очевидно, я мог бы создать новый интервал, но я ищу канонический способ сделать это.

3

Решение

Канонический способ состоит в том, чтобы построить новый интервал и назначить его вашему интервалу, потому что boost::lcl::discrete_interval является неизменным (кроме оператора присваивания). Таким образом, чтобы сдвинуть интервал, вы должны создать новый интервал с желаемыми нижними и верхними границами и назначить его старому интервалу.

boost::icl::discrete_interval<int> interval;
interval = boost::icl::discrete_interval<int>::closed(3, 4);
1

Другие решения

Других решений пока нет …