Рубрики

emplace против вставки в C ++ STL

В C ++ все контейнеры ( вектор , стек , очередь , набор , отображение и т. Д.) Поддерживают операции вставки и вставки.

Преимущество emplace состоит в том, что он вставляет на месте и избегает ненужной копии объекта. Для примитивных типов данных не имеет значения, какой из них мы используем. Но для объектов использование emplace () является предпочтительным по соображениям эффективности.

// C ++ код, чтобы продемонстрировать разницу между
// вставим и вставим
#include<bits/stdc++.h>

using namespace std;

   

int main()

{

    // объявляем карту

    multiset<pair<char, int>> ms;

       

    // используя emplace () для вставки пары на место

    ms.emplace('a', 24);

       

    // Нижняя строка не будет компилироваться

    // ms.insert ('b', 25);

       

    // используя emplace () для вставки пары на место

    ms.insert(make_pair('b', 25));    

       

    // печать мультимножества

    for (auto it = ms.begin(); it != ms.end(); ++it)

        cout << " " << (*it).first << " "

             << (*it).second << endl;

   

    return 0;

}

Выход:

 a 24
 b 25

Пожалуйста, обратитесь к разделу Вставка элементов в std :: map (insert, emplace и operator []) для получения подробной информации.

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

emplace против вставки в C ++ STL

0.00 (0%) 0 votes