C++ 如何在C+;中的奇数元素前面添加值-1+;vector,我在使用插入函数时遇到问题 int main() { 向量v; v=初始化(v); cout

C++ 如何在C+;中的奇数元素前面添加值-1+;vector,我在使用插入函数时遇到问题 int main() { 向量v; v=初始化(v); cout,c++,C++,如果要在遍历向量时将新元素插入向量,有两种选择: 使用insert()返回的迭代器: int main () { vector < int > v; v = initialize (v); cout << "Initial Vector: " << endl; print (v); cout << "Adding -1 in front of Odds: " << endl; v = i

如果要在遍历向量时将新元素插入向量,有两种选择:

  • 使用
    insert()
    返回的
    迭代器

    int main ()
    {
        vector < int  > v;
        v = initialize (v);
        cout << "Initial Vector: " << endl;
        print (v);
        cout << "Adding -1 in front of Odds: " << endl;
        v = insert_odds(v);
        cout << "Final Vector: " << endl;
        print(v);
    }
    
    double random (unsigned int &seed)
    {
        const int MODULUS = 15749;
        const int MULTIPLIER = 69069;
        const int INCREMENT = 1;
        seed = ((MULTIPLIER * seed) + INCREMENT) % MODULUS;
        return double (seed) / double (MODULUS);
    }
    
    vector <int > initialize (vector < int > v)
    {
        unsigned int seed=2;
        for (int i = 0; i < 10; i++)
            v.push_back(int (10 + (10 * random (seed))));
        return v;
    }
    
    void print (vector < int > v)
    {
    
        for (int i = 0; i < v.size(); i++)
            cout << v[i] << " ";
        cout << endl;
    }
    bool isOdd(int n)
    {
        return n%2 != 0 && n > 0;
    }
    
    vector<int> insert_odds(vector <int> v)
    {
        std::vector<int>::iterator it = find_if(v.begin(),v.end(),isOdd);
        while(it  != v.end())
        {
             it = find_if(v.begin(),v.end(),isOdd);
             v.insert(it,-1);
        }
        return v;
    }
    
    vector::迭代器iter=myVector.begin();
    while(iter!=myVector.end())
    {
    如果((*iter%2)!=0)
    iter=myVector.insert(iter,-1)+2;
    其他的
    ++iter;
    }
    
  • 使用索引而不是迭代器:

    vector<int>::iterator iter = myVector.begin();
    while (iter != myVector.end())
    {
        if ((*iter % 2) != 0)
            iter = myVector.insert(iter, -1) + 2;
        else
            ++iter;
    }
    
    vector::size\u type idx=0;
    而(idx

  • 使用
    vector::insert()
    中的返回值:

    向量v={1,2,3,4,5}; 对于(自动it=v.begin();it!=v.end();it++) { 如果(*it&1) { it=v.插入(it,-1); it++; } }
    Title解释了它——不,它没有。显示您的代码。请详细说明您的问题。用您尝试过的内容显示a,并用它来解释您对它不起作用的原因的想法。即使在没有澄清的情况下理解问题是什么,都是严肃的道具。错误:调用“插入”myVector.insert时没有匹配的成员函数(idx,-1);您仍然可以使用迭代器-
    insert
    返回一个。您可以详细说明如何返回吗?我肯定这不是一个好的家庭作业答案,但我会将每个元素复制到一个新向量,如果元素是奇数,请在复制之前向新向量添加一个
    -1
    vector<int>::size_type idx = 0;
    while (idx < myVector.size())
    {
        if ((myVector[idx] % 2) != 0)
        {
            myVector.insert(myVector.begin()+idx, -1);
            idx += 2;
        }
        else
            ++idx;
    }
    
    vector<int> v = { 1, 2, 3, 4, 5 };
    for (auto it = v.begin(); it != v.end(); it++)
    {
        if (*it & 1)
        {
            it = v.insert(it, -1);
            it++;
        }
    }