Рубрики

Общие тонкости в векторных STL

Обязательное условие — основы вектора

Ниже приведены некоторые важные моменты, которые могут сэкономить время на мелочах в интервью или важном конкурсе по программированию.

  1. vector <int> vect (10) против вектора <int> vect [10]
    // Creates a vector vect[] of size 10
    vector <int> vect(10) 
    
    // creates an array of vectors vect[] of size 
    // 10 where each vector has int members
    vector<int> vect[10]
    
  2. resize () и push_back ():
    После того, как функция resize () была использована в векторе, если push_back () используется в том же векторе, возвращаемые элементы добавляются в конец вектора с измененным размером, а не в него.

    // Программа на C ++ для демонстрации этого push_back ()
    // происходит в конце измененного вектора.
    #include<bits/stdc++.h>

    using namespace std;

      

    int main()

    {

        vector<int> vect;

        for (int i = 0; i < 5; i++)

            vect.push_back(i);

      

        // Изменение размера вектора до 10

        vect.resize(10);

      

        // печатает 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);

      

        // печатает 0 1 2 3 4 0 0 0 0 0 50

        for (int i = 0; i < vect.size(); i++)

            cout << vect[i] << " ";

      

        return 0;

    }

     Выход:
    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<vector<int>> vect;
    
    // This works fine
    vector< vector <int> > vect; 

    Разница между этими двумя утверждениями заключается в том, что в первом утверждении есть пробел между угловыми скобками (>>). Запись без пробела не работает, потому что >> является оператором в C ++.

  5. Передача векторов в функции:
    Когда вектор просто передается в функцию, создается копия вектора. Это может занять много времени в случае больших векторов.

    // C ++ программа для демонстрации того, что когда векторы
    // передаются в функции без &, копия
    // создан.
    #include<bits/stdc++.h>

    using namespace std;

      
    // vect здесь является копией vect в main ()

    void func(vector<int> vect)

    {

       vect.push_back(30);

    }

      

    int main()

    {

        vector<int> vect;

        vect.push_back(10);

        vect.push_back(20);

      

        func(vect);

      

        // vect остается неизменным после функции

        // вызов

        for (int i=0; i<vect.size(); i++)

           cout << vect[i] << " ";

      

        return 0;

    }

    Выход :

    10 20

    В ситуациях, когда нам фактически не нужна копия вектора, объявление должно быть сделано следующим образом:

    // It is recommended to pass vectors by reference
    // wherever possible.
    int func(vector<int>& vect)
    {
    
    }
    

Эта статья предоставлена Супия Шриватса . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Общие тонкости в векторных STL

0.00 (0%) 0 votes