关于STL的用法

😎vector 可增长数组
插n个数,申请o(logN),copy平均o(1);
申请三法:
    vector<int> a;
    vector<int> b(3);//建3个空间
    vector<int> c(3,4);//建3个空间,每个是4
遍历三法:
    for(int i=0;i<a.size();i++) a[i];//下标遍历
    for(auto i=begin();i!=end();i++) *i;//迭代器遍历
    for(auto x:a) x;//范围遍历
支持比较运算(按字典序)
    vector<int> a(3,4),b(4,3);
    a>b

😎pair<int,int>有序对
first 第一元素        second第二元素
支持比较运算:以first为第一关键字,second为第二关键字
赋值二法
    pair<int,string> p;
    p=make_pair(10,"abc");
    p={20,"abc"};
三个属性
    pair<int,pair<int,string>> p;

😎string

支持加法,直接加在字符串后面
    string a="a";
    a+="bc";
//a现在为“abc”
substr(1(,2))函数——返回指定子串
    cout<<a.substr(1,2);//1为子串起始下标,2为子串长度(可省)如果大于实际长度则有多少返回多少
c_str()——把string按char形式返回
    printf("%s",a.c_str());

😎queue队列
无clear()函数;

😎priority_queue优先队列
无clear();
默认为大根堆
变成小根堆的方法:
1.插入-x,出来时转成x
2.
    priority_queue<int,vector<int>,greater<int>>q;
greater<>里面不可以放结构体

😎deque双端队列
效率慢!!
有clear();
push_back()            pop_back()
push_front()             pop_front()
[ ]支持随机存储
头尾   begin(),end()

😎set集合(不可有重复元素,有后者忽略) multiset(可以存在重复)
set红黑树(平衡二叉树) 询问时间复杂度为o(log2n)
multiset搜索二叉树
set和multiset的唯一“卵用”:求大于(大于或等于)value的前几个元素是什么(lower,upper),频繁插入删除,随时询问
其它用一般用unordered_set看在不在集合里
对于可重复元素用unordered_map检查是否在集合里
erase(x)
————    x是一个数,删除所有x                时间复杂度o(x的个数+logN)
————    x是一个迭代器,删除这个迭代器所指
lower_bound(x)返回大于等于x最小数的迭代器,针对可重复返回最前面
upper_bound(x)返回大于x最小数的迭代器
++后继    --前驱            时间复杂度o(logN)

😎map映射 multimap可重复映射
map询问时间复杂度为o(log2n),询问为o(1)
multimap插入复杂度为o(log2n),询问为o(1)
insert(x)x为一个pair
erase(x)x为一个pair或者迭代器
[ ]支持随机存储

    map<string,int> m;
    m["abc"]=1;
    cout<<m["abc"]<<endl;//取读操作时间复杂度o(logN)

😎unordered_ 无序的set,multiset,map,multimap
底层用的是hash
增删改查的时间复杂度为o(1);
但不支持lower_bound、upper_bound、和迭代器++ -- 等于排序有关的操作
unordered_set<> , unordered_map<>,里面都不可以放结构体,只能放基本类型

对于迭代器,vector和deque,string可相互加减,map,set系列只有++,--

😎bitset压位
每个字节可用8个01——优化bool,使同样空间是bool存储的8倍
支持所有位运算
[ ]支持随机存储
定义 :bitset<长度> bi(赋值可有可无——string/char[])
count()返回有多少个1
any()是否至少有一个1
none()是否全是0
set() 把所有位 置成1        set(k,v)把k位变成v
reset()把所有位变成0
flip()是所有位取反        flip(k)第k位取反
全部评论

相关推荐

活泼的代码渣渣在泡池...:哈哈哈挺好的,我也上岸美团了,不说了,我又接了一单
点赞 评论 收藏
分享
11-22 16:20
已编辑
青岛黄海学院 Java
等闲_:感觉有好多地方会被问穿,mysql存储向量这个方案问题应该很大的,如果深问的的话,为什么不用es,不用pg,不用mivus,分块策略是怎么做的,向量化是怎么向量化的,稠密向量还是稀疏向量,再深问余弦相似度,HSWM算法,Bm25算法,为什么不用混合检索或者Rank重排序优化?其他的项目不停机分库分表咋实现的,切库过程中数据有diff的话有没有补偿策略?既然有了分库分表了有没有碰到业务上不好优化的慢sql,让这个sql读从库?而且点评的话,最好自己压测过,要不这个数据也不好解释。现在就27的情况来看,很多同学已经有了中大厂实习,这个节点也会偏向这些有大厂实习的92同学,而且hc也不多,所以坚持海投吧
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务