使用insert()在向量开头的C ++插入元素

时间:2019-12-08 16:01:38

标签: c++

下面我有一个函数,应该从一个向量中将奇数提取为另一个向量,而在旧向量中,我想在向量的开头插入偶数,以便以后调整大小。我知道这不是一种有效的方法,但是我遇到了一个问题,那就是用调整大小而不是擦除来测试变体的速度,我认为它反而会具有相同的速度。我的问题是,在其他时候我想要插入偶数个元素,但它不能以这种方式工作..我在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;
}

0 个答案:

没有答案