2009-12-02

うげ、これはまずい

template<class InputIterator, class OutputIterator> OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result);

Requires: result shall not be in the range [first,last).

template<class InputIterator, class OutputIterator> OutputIterator move(InputIterator first, InputIterator last, OutputIterator result);

Requires: result shall not be in the range [first,last).

うわ、やっべ。俺の書いた既存のコード間違えまくりんぐ。

というのも、VC++のmoveやcopyは、メタプログラミングによって、使える場合はmemmove()を使っているので、コンパイルが通り、普通に動くのだ。

2 comments:

  1. copy(v.begin(), v.begin() + 10, v.begin() + 5);
    とか書いてたのは
    copy_backward(v.begin(), v.begin() + 10, v.begin() + 15);
    とかに修正しないといけなさそうですね。

    ReplyDelete
  2. 確かにそういう書き方をした事はないですね
    かならず first <= last だと思ってました

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.