STL----set和vector內的指標使用和一些函式
阿新 • • 發佈:2021-06-26
set內是一顆紅黑樹,好像我以後也是要學的
注意set是會自動排序的,但是你根本找不到每一個數的排名
因為,set沒這個功能,開一個數組記錄一下就好了
所以我們現在有這麼幾個函式
#include<bits/stdc++.h> using namespace std; #define re register int #define ll long long ll n; set<int> a; int b[100000000]; signed main(){ n=5e2; for(re i=0;i<=n;i++)a.insert(i+i);//插入x cout<<"begin(): "<<*a.begin()<<endl;//set內最小的數 cout<<"end(): "<<*a.end()<<endl;//set的大小,size()一樣,不過返回的是地址 cout<<"--end(): "<<*--a.end()<<endl;//set內最大的數 cout<<"size(): "<<a.size()<<endl;//set的大小 cout<<"find(2): "<<*a.find(2)<<endl;//查詢x,返回地址,但是不能像lower_bound一樣做減法,編譯不過 cout<<"lower_bound(3): "<<*a.lower_bound(3)<<endl;//set內第一個大於等於x的數的地址 cout<<"upper_bound(4): "<<*a.upper_bound(4)<<endl;//大於x for(re i=0;i<=n;i++)a.erase(i+i);//刪除x } begin(): 0 end(): 501 --end(): 1000 size():501 find(2): 2 lower_bound(3): 4 upper_bound(4): 6 real 0m0.001s user 0m0.000s sys 0m0.000s
set的用法就這些可以用的上
但是vector內的指標可以進行加減
因為vector內部本身就是一個線性空間,可以的
#include<bits/stdc++.h> using namespace std; #define re register int #define ll long long ll n; vector<int> a; int b[100000000]; signed main(){ n=5e2; for(re i=1;i<=n;i++)a.push_back(i+i);//插入x cout<<"begin(): "<<*a.begin()<<endl;//vector內第一個數的地址 cout<<"--end(): "<<*--a.end()<<endl;//vector內最後一個數的地址 cout<<"size(): "<<a.size()<<endl;//vector的大小 cout<<"front(): "<<a.front()<<endl;//第一個數 cout<<"back(): "<<a.back()<<endl;//最後一個數 } begin(): 2 --end(): 1000 size(): 500 front(): 2 back(): 1000 real 0m0.001s user 0m0.000s sys 0m0.000s
沒了