📜  C++ STL中的矢量insert()函数

📅  最后修改于: 2021-05-30 07:32:18             🧑  作者: Mango

std :: vector :: insert()是C++ STL中的内置函数,该函数在指定位置的元素之前插入新元素,从而通过插入的元素数量有效地增加了容器大小。

  1. 句法:
    vector_name.insert (position, val)
    

    参数:该函数接受以下指定的两个参数:

    • position –指定迭代器,该迭代器指向要进行插入的位置。
    • val –指定要插入的值。

    返回值:该函数返回一个迭代器,该迭代器指向新插入的元素。

    示例1:下面的程序说明了上面提到的函数,其中新元素插入到前面。

    // Program below illustrates the
    // vector::insert() function
      
    #include 
    using namespace std;
      
    int main()
    {
        // initialising the vector
        vector vec = { 10, 20, 30, 40 };
      
        // inserts 3 at front
        auto it = vec.insert(vec.begin(), 3);
        // inserts 2 at front
        vec.insert(it, 2);
      
        int i = 2;
        // inserts 7 at i-th index
        it = vec.insert(vec.begin() + i, 7);
      
        cout << "The vector elements are: ";
        for (auto it = vec.begin(); it != vec.end(); ++it)
            cout << *it << " ";
      
        return 0;
    }
    
    输出:
    The vector elements are: 2 3 7 10 20 30 40
    

    示例2:下面的程序说明了上述函数,其中在特定位置插入了新元素。

    // Program below illustrates the
    // vector::insert() function
      
    #include 
    using namespace std;
      
    int main()
    {
        // initialising the vector
        vector vec = { 10, 20, 70, 80 };
        int x = 50;
      
        // inserting multiple elements
        // at specific positions
        vec.insert(vec.begin() + 2, { 30, 40, x, 60 });
      
        cout << "The vector elements are: ";
        for (auto it : vec)
            cout << it << " ";
      
        return 0;
    }
    
    输出:
    The vector elements are: 10 20 30 40 50 60 70 80
    
  2. 句法:
    vector_name.insert(position, size, val)
    

    参数:该函数接受以下指定的三个参数:

    • position –指定迭代器,该迭代器指向要进行插入的位置。
    • size –它指定在指定位置插入val的次数。
    • val –指定要插入的值。

    返回值:该函数返回一个迭代器,该迭代器指向新插入的元素。

    下面的程序说明了上述函数:

    // program below illustrates the
    // vector::insert() function
      
    #include 
    using namespace std;
      
    int main()
    {
        // initialising the vector
        vector vec = { 10, 20, 30, 40 };
      
        // inserts 3 one time at front
        auto it = vec.insert(vec.begin(), 1, 3);
      
        // inserts 4 two times at front
        vec.insert(it, 2, 4);
      
        cout << "The vector elements are: ";
        for (auto it = vec.begin(); it != vec.end(); ++it)
            cout << *it << " ";
      
        return 0;
    }
    
    输出:
    The vector elements are: 4 4 3 10 20 30 40
    
  3. 句法:
    vector_name.insert(position, iterator1, iterator2)
    

    参数:该函数接受以下指定的三个参数:

    • position –它指定要在矢量中插入的位置。
    • iterator1 –它指定要从中插入元素的起始位置
    • iterator2 –指定要插入元素的结束位置

    返回值:该函数返回一个迭代器,该迭代器指向新插入的元素。

    下面是上述函数的说明:

    // program below illustrates the
    // vector::insert() function
      
    #include 
    using namespace std;
      
    int main()
    {
        // initialising the vector
        vector vec1 = { 10, 20, 30, 40 };
        vector vec2;
      
        // inserts at the beginning of vec2
        vec2.insert(vec2.begin(), vec1.begin(), vec1.end());
      
        cout << "The vector2 elements are: ";
        for (auto it = vec2.begin(); it != vec2.end(); ++it)
            cout << *it << " ";
      
        return 0;
    }
    
    输出:
    The vector2 elements are: 10 20 30 40
    
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”