[英]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形成不同數據類型的組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.