C++ Queue::emplace() 函式



C++ 中的 std::queue::emplace() 函式在佇列容器中允許就地直接構造元素,而不是複製或移動操作。它透過將引數轉發到元素型別的建構函式來在佇列中構造物件。

與 push() 函式不同,push() 函式獲取預先構造的物件並將其複製到佇列中,而 emplace() 函式直接在佇列中構造物件。此函式的時間複雜度是對數的。

語法

以下是 std::queue::emplace() 函式的語法。

void emplace (Args&&... args);

引數

  • args − 它表示轉發到構造新元素的引數。

返回值

此函式不返回任何內容。

示例

讓我們看下面的示例,我們將把整數放入佇列中。

#include <iostream>
#include <queue>
int main()
{
    std::queue<int> x;
    x.emplace(11);
    x.emplace(22);
    std::cout << " " << x.front() << std::endl;
    return 0;
}

輸出

以下是上述程式碼的輸出:

11

示例

考慮另一種情況,我們將使用移動語義並將字串插入佇列。

#include <iostream>
#include <queue>
#include <string>
int main()
{
    std::queue<std::string> x;
    std::string str = "TutorialsPoint";
    x.emplace(std::move(str));
    std::cout << " " << x.front() << std::endl;
    return 0;
}

輸出

上述程式碼的輸出如下:

TutorialsPoint

示例

以下是在佇列中放置對的示例。

#include <iostream>
#include <queue>
#include <utility>
int main()
{
    std::queue<std::pair<int, int>> x;
    x.emplace(11, 2);
    x.emplace(3, 44);
    while (!x.empty()) {
        auto a = x.front();
        std::cout << "(" << a.first << ", " << a.second << ") ";
        x.pop();
    }
    return 0;
}

輸出

如果我們執行上述程式碼,它將生成以下輸出:

(11, 2) (3, 44)
queue.htm
廣告

© . All rights reserved.