簡體   English   中英

在C ++中將地圖與隊列一起使用

[英]Using map with queue in c++

嘗試在下面的代碼段運行時,它將編譯而沒有任何錯誤。

int main()
{
    queue<map<int,int> >run_time;
}

但是,現在,當我嘗試使用以下代碼將某些內容推入隊列時。

int main()
{
    queue<map<int,int> >run_time;

    run_time.push(make_pair(1,2));
    run_time.push(make_pair(3,4));
}

我收到如下錯誤:

no matching function for call to 'std::queue<std::map<int,int,std::less<int>,std::allocator<std::pair<const int,int>

問題是make_pair不會創建map 您需要預先創建地圖,使用make_pair插入地圖,然后將地圖本身插入queue

map<int,int> x;
x.insert(make_pair(1,2));
run_time.push(x);

您有一個地圖隊列,而不是成對隊列。 您需要將地圖推入其中。

根據問題中給出的代碼,您似乎想要創建一個Queue,該隊列的每個元素都是另外兩個元素的集合。 使用類模板“ pair”或“ tuple”可以很容易地做到這一點。

對於[1] 對,您編寫template <class T1, class T2> struct pair; 而對於元組 [2] template <class... Types> class tuple;

元組是對的泛化,其中兩個以上的成員可以組成組。 我認為代碼中的錯誤是您正在初始化地圖,而不是將其用作地圖,您希望將Map中的各個元素推入Queue中,從而破壞了創建Map的目的。 Pair和Tuple創建可以與其他類似對象分開對待的單獨對象,它們的行為類似於使用struct形成不同數據類型的組。

[1]。 http://www.cplusplus.com/reference/utility/pair/

[2]。 http://www.cplusplus.com/reference/tuple/tuple/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM