码迷,mamicode.com
首页 > 其他好文 > 详细

STL----set和vector内的指针使用和一些函数

时间:2021-06-28 18:30:07      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:pac   就是   第一个   删除   col   最大   stl   include   线性   

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

没了

STL----set和vector内的指针使用和一些函数

标签:pac   就是   第一个   删除   col   最大   stl   include   线性   

原文地址:https://www.cnblogs.com/hzoi-fengwu/p/14933766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!