vectorのrotate 使い方

void rotate_test(){
  VI A = {1,2,3,4,5,6,7};

  // => {2, 3, 4, 5, 6, 7, 1}
  rotate(A.begin(), A.begin()+1, A.end());
  debug(A);

  // => {1, 2, 3, 4, 5, 6, 7}
  // 6個先
  rotate(A.begin(), A.begin()+6, A.end());
  debug(A);

  // => {1, 2, 3, 4, 5, 6, 7}
  // begin+7個先には何もない。それが先頭に来て、残りが後ろに続く(ギリギリ)
  rotate(A.begin(), A.begin()+7, A.end());
  debug(A);

  // 8個先 さすがにエラー
  rotate(A.begin(), A.begin()+8, A.end());
  debug(A);

  // error
  rotate(A.begin(), A.begin()+100, A.end());
  debug(A);
}
  • 第2引数のoffsetにはvectorの長さまでOK. それ以上だとエラー