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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

set的使用03(较多的操作函数)

發布時間:2024/9/3 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 set的使用03(较多的操作函数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1367: Data Structure
Time Limit: 1 Sec Memory Limit: 128 MB
[Submit][Status][Web Board]
Description

給出一個集合,初始為空,進行N次操作,操作分為三種:
1 往集合中添加一個元素,如果集合中已經存在,則無需重復添加
2 從集合中刪除一個元素,如果集合中不存在該元素,則無需刪除
3 判斷元素在集合中排行老幾(最小的是老大),如果元素不存在請輸出:“sorry”(不含雙引號)

Input

多組測試數據
每組第1行:1個整數N,表示操作的次數。(2<=N<=10000)
第2 - (N+1)行:每行2個整數k和s對應操作的方式和被操作的元素(1<=k<=3,1<=s<=1000000)

Output

對應與每一個操作3,給出相應的結果

Sample Input

8
3 1
2 1
1 1
1 1
1 2
3 2
2 2
3 2
5
1 1
1 100
1 1000000
2 99999
3 1000000

Sample Output

sorry
2
sorry
3

HINT

Source
AC代碼~:

#include <stdio.h> #include <set> #include <algorithm> using namespace std; set<int>s; int main() {int n;while(~scanf("%d",&n)){s.clear();set<int>::iterator it;while(n--){int x,y;scanf("%d%d",&x,&y);switch(x){case 1:s.insert(y);break;case 2:if(s.count(y))s.erase(y);break;case 3:if(s.count(y)){int c = 0;for(it = s.begin(); it != s.find(y); it++)c++;printf("%d\n",++c);}elseprintf("sorry\n");break;}}}return 0; }

總結:
集合就想到set
set的迭代器不能執行加減運算,這題case3部分困擾我好久,一直想借助
find.s(y)-s.begin()來解決,但是發現編譯一直報錯,最后查了一下發現set迭代器不能加減法運算。最后我換了中思路了解決case3的問題,我本以為會Time exceed limited,沒想到AC了,哈哈哈開心~
總結進入正文~—>:

1. s.clear();//清空容器set 2. set<int>::iterator it;//迭代器,名字叫it,它有點像指針~(功能一樣的) 3. s.insert(x);//將x插入set 4. s.count(y);//判斷set中是否存在y,~~不要寫成(s.cout)~~ 5. s.begin();//叫s的set容器首地址 6. s.erase(x);//在set容器中刪除x 7. s.find(y);//set中找到元素y并返回它的地址

總結

以上是生活随笔為你收集整理的set的使用03(较多的操作函数)的全部內容,希望文章能夠幫你解決所遇到的問題。

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