日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

7-26 Windows消息队列 (25 分)(详解+思路+超时解决)

發布時間:2023/12/4 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7-26 Windows消息队列 (25 分)(详解+思路+超时解决) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:題目

消息隊列是Windows系統的基礎。對于每個進程,系統維護一個消息隊列。如果在進程中有特定事件發生,如點擊鼠標、文字改變等,系統將把這個消息加到隊列當中。同時,如果隊列不是空的,這一進程循環地從隊列中按照優先級獲取消息。請注意優先級值低意味著優先級高。請編輯程序模擬消息隊列,將消息加到隊列中以及從隊列中獲取消息。

輸入格式:
輸入首先給出正整數N(≤10
?5
?? ),隨后N行,每行給出一個指令——GET或PUT,分別表示從隊列中取出消息或將消息添加到隊列中。如果指令是PUT,后面就有一個消息名稱、以及一個正整數表示消息的優先級,此數越小表示優先級越高。消息名稱是長度不超過10個字符且不含空格的字符串;題目保證隊列中消息的優先級無重復,且輸入至少有一個GET。

輸出格式:
對于每個GET指令,在一行中輸出消息隊列中優先級最高的消息的名稱和參數。如果消息隊列中沒有消息,輸出EMPTY QUEUE!。對于PUT指令則沒有輸出。

輸入樣例:
9
PUT msg1 5
PUT msg2 4
GET
PUT msg3 2
PUT msg4 4
GET
GET
GET
GET
輸出樣例:
msg2
msg3
msg4
msg1
EMPTY QUEUE!

二:思路

用到了map 容器 ,那就簡單了,map有自動排序功能,這樣的話每次遇到GET 就將 第一個輸出來,同時將第一個刪除。

如果map容器不熟練請看鏈接:

https://blog.csdn.net/qq_48508278/article/details/118531197

三:上碼

#include<bits/stdc++.h> using namespace std;int main() {map<int,string>m;map<int,string>:: iterator t;//迭代器的使用 用于遍歷int N;cin >> N;for( int i = 0; i < N; i++ ){string str;cin >> str;if( str == "PUT"){string str1;int num;cin >> str1 >> num;m[num] = str1;}if( str == "GET"){if( t != m.end() && !m.empty()){t = m.begin();//指向map容器當中第一對元素cout << t->second << endl;t = m.find(t->first);m.erase(t);}else if(m.empty()){cout << "EMPTY QUEUE!" << endl;}}}}

三:超時問題

以往做題經驗:
1:多提交幾次,卡時間,有可能會卡過去;
2:將 cout 輸出改為 printf輸出
3: 將 cin 輸入改為 sacnf輸入

補充:如果還不行 那說明得回爐重造了, 本題是多提交幾次卡過去了。

加油陌生人

總結

以上是生活随笔為你收集整理的7-26 Windows消息队列 (25 分)(详解+思路+超时解决)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。