第三天。。。
今天学习了STL中的一些函数
stack~~~~~栈,FILO,push进,pop出最后一个push的元素
queue~~~~~队列,FIFO,push进,pop出第一个push的元素
deque~~~~~双向队列,可push_front, push_back, pop_front, pop_back,来在队列前面,后面输入,从队列前面后面弹出元素
set~~~~~,set中的元素不能重复。insert(),向set中插入元素。erase(???),擦除set中的某元素。count(???),在set中查找是否有某元素,是则返回1,否则返回0。
algorithem~~~~~sort,将元素从小到大排序,sort(begin(),end()),若要降序排列可写成sort(begin(),end(),greater<>()),注意左闭右开 [ )。
string~~~~~与字符串相关的函数,string可直接定义字符串,size()或lenth()某字符串的长度。string 中字符串的+将两个字符串连接起来。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二分法查找(复杂度低):
首先将数列排序,a[r-l],一般升序,查找 x,数列左右两端分为 a[ l],a[ r]。
while(l<=r)
{
mid= l + ( r - l )/2;
if(a[mid]==x) return 1;
else if ( a[mid] < x ) l = mid +1 ;
else if ( a[mid] > x ) r = mid -1 ;
}
return -1;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
并查集:
”并“:两个数 a , b;合并,可视为 a 是 b 的 “爹”,再有 b , c 合并,则 b 是 c 的爹,又因a是b的爹, 所以a也是c的爹。 a<------b<------c
fa[k]=k; 一开始,各自是各自字的爹;
fa[b] = a ;
fa[c] = b ;
fa[ find(b) ]=find( a ) ;
”查“~~~~~找爹函数。。
int fa[k]=k;
int find( int x )
{
if ( fa[x]==x;) return k;
else return fa[x] = find ( fa[x] );
}