auxiliary function atmod

This commit is contained in:
Zeno Rogue 2023-05-23 20:21:20 +02:00
parent b808d78e7f
commit 6aed2c58e8
1 changed files with 12 additions and 0 deletions

12
hyper.h
View File

@ -884,6 +884,18 @@ const typename Map::mapped_type *at_or_null(const Map& map, const Key& key) {
return (it == map.end()) ? nullptr : &it->second;
}
int gmod(int i, int j);
// vector::at(i) modulo its size (const version)
template<class T> const T& atmod(const vector<T>& container, int index) {
return container[gmod(index, isize(container))];
}
// vector::at(i) modulo its size (non-const version)
template<class T> T& atmod(vector<T>& container, int index) {
return container[gmod(index, isize(container))];
}
namespace daily {
extern bool on;
extern int daily_id;