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:
copy(v.begin(), v.begin() + 10, v.begin() + 5);
とか書いてたのは
copy_backward(v.begin(), v.begin() + 10, v.begin() + 15);
とかに修正しないといけなさそうですね。
確かにそういう書き方をした事はないですね
かならず first <= last だと思ってました
Post a Comment