当我有简单的指针时,我可以像这样安全地包装数组:
p+=X; // p pointer p can point beyond end of array
if(p>=array+array_size) p-=array_size; // forget about potential multiple wrap
我可以在任何可索引容器上安全地为迭代器做同样的事情吗?双端队列?:
p+=x;
if(p>=mydeque.end()) p-=mydeque.size(); // forget about potential multiple wrap
换句话说:将迭代器指向集合之外的计算是否安全?