【发布时间】:2019-03-27 15:47:27
【问题描述】:
我找到了几页关于将矢量范围移动到另一个矢量的内容,但是我正在努力使其工作。
我想将元素从sourceVect 移动到destVect,将sourceVect[1] 到sourceVect[1+numToCopy] 之间的元素移动到sourceVect 的开头。我尝试通过以下方式做到这一点:
vector<int> destVect;
vector<int> sourceVect = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int numToCopy = 7;
vector<int>::iterator itSource = sourceVect.begin();
vector<int>::iterator itSourceEnd = sourceVect.begin();
advance(itSource, 1);
advance(itSourceEnd, 1+numToCopy);
std::copy(itSource, itSourceEnd, destVect.begin()); //copy(first,last,output vector ite)
for (vector<int>::iterator it = destVect.begin(); it != destVect.end(); ++it)
cout << ' ' << *it;
但我在 Visual Studio 中得到 Debug Assertion Failed,vector iterator + offset out of range。请注意,我只是在 Visual Studio 2015 中尝试,最后必须在 C++98 中实现 mbed,这意味着我不能使用 std::next 例如。
【问题讨论】:
-
请注意,您可以通过自定义 build profile 将 C++11 与 Mbed OS 一起使用,您可以在其中设置
-std=c++11。