下面我有一个函数,应该从一个向量中将奇数提取为另一个向量,而在旧向量中,我想在向量的开头插入偶数,以便以后调整大小。我知道这不是一种有效的方法,但是我遇到了一个问题,那就是用调整大小而不是擦除来测试变体的速度,我认为它反而会具有相同的速度。我的问题是,在其他时候我想要插入偶数个元素,但它不能以这种方式工作..我在insert函数中做错了什么?我是否以错误的方式传递了迭代器?
std::vector<int> extract(std::vector<int>& even)
{
std::vector<int> odd;
std::vector<int>::size_type size = even.size();
std::vector<int>::const_iterator a = even.begin();
std::vector<int>::const_iterator b = even.end();
while (a != b)
{
if ((*a) % 2 != 0)
{
odd.push_back((*a));
}
else
{
even.insert(even.begin(),(*a));
}
a++;
}
//even.resize(size);
return odd;
}