📜  向量STL中的常见细微差别

📅  最后修改于: 2021-05-30 10:46:25             🧑  作者: Mango

先决条件–矢量基础

以下是一些重要的观点,可以节省在面试或重要的编码竞赛中花费很少的时间。

  1. 向量 vect(10)与向量 vect [10]
    // Creates a vector vect[] of size 10
    vector  vect(10) 
    
    // creates an array of vectors vect[] of size 
    // 10 where each vector has int members
    vector vect[10]
    
  2. resize()和push_back():
    在向量上使用了resize()函数之后,如果在同一向量上使用了push_back(),则被推回的元素将添加到调整大小后的向量的末尾,而不是添加到该向量中。
    // A C++ program to demonstrate that push_back()
    // happens at the end of resized vector.
    #include
    using namespace std;
      
    int main()
    {
        vector vect;
        for (int i = 0; i < 5; i++)
            vect.push_back(i);
      
        // Resizing vector to size 10
        vect.resize(10);
      
        // Prints 0 1 2 3 4 0 0 0 0 0
        for (int i = 0; i < vect.size(); i++)
            cout << vect[i] << " ";
        cout << "\n";
      
        vect.push_back(50);
      
        // Prints 0 1 2 3 4 0 0 0 0 0 50
        for (int i = 0; i < vect.size(); i++)
            cout << vect[i] << " ";
      
        return 0;
    }
    
    Output:
    0 1 2 3 4 0 0 0 0 0
    0 1 2 3 4 0 0 0 0 0 50
  3. clear()函数它使向量具有零个元素,即-没有元素且所有元素都不为全0。
  4. 创建二维向量
    // This doesn't work
    vector> vect;
    
    // This works fine
    vector< vector  > vect; 

    这两个语句之间的区别在于,第一个语句在尖括号(>>)之间有一个空格。没有空格的书写不起作用,因为>>是C++中的运算符。

  5. 将向量传递给函数:
    将向量简单地传递给函数,将创建向量的副本。在大向量的情况下,这可能会花费很多时间。
    // C++ program to demonstrate that when vectors
    // are passed to functions without &, a copy is
    // created.
    #include
    using namespace std;
      
    // The vect here is a copy of vect in main()
    void func(vector vect)
    {
       vect.push_back(30);
    }
      
    int main()
    {
        vector vect;
        vect.push_back(10);
        vect.push_back(20);
      
        func(vect);
      
        // vect remains unchanged after function
        // call
        for (int i=0; i

    输出 :

    10 20

    在实际上不需要矢量的副本的情况下,声明应如下所示:

    // It is recommended to pass vectors by reference
    // wherever possible.
    int func(vector& vect)
    {
    
    }
    
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”