1. 程式人生 > 其它 >STL----set和vector內的指標使用和一些函式

STL----set和vector內的指標使用和一些函式

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

沒了