std ::从一个范围复制到自身

时间:2015-10-05 02:05:20

标签: c++ stl-algorithm

这可能是一个愚蠢的问题,答案可能只是“因为”,但我很好奇,所以在这里。假设我想将std::vector的最终元素复制到前面而不考虑其他地方发生的事情。我可以通过一个简单的函数调用

来做到这一点
#include <vector>
#include <algorithm>

std::vector<int> v;
.
.
.
std::copy(v.begin() + N, v.end(), v.begin());

我发现令人惊讶的是,如果N == 0(我认为除非v.empty())标准似乎标注了这种未定义的行为。因为即使是std::copy的天真实现在这种情况下也不会有问题(实际上会产生NOP),为什么标准如此严格?

0 个答案:

没有答案