函数lower_bound()在first和last中的前闭后开区间进行二分查找,
返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置
注lower_bound返回的是一个地址
Hash用来处理表格
返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置
注lower_bound返回的是一个地址
lower_bound 和upper_bound 与 sort函数都在<algorithm>头文件中
sort函数的使用 sort(a,a+n); 是对a[0]到a[n-1] 升序的排序
bool cmp(int i,int j)
{ return i<j;} sort(a,a+n,cmp);是对a[0]到a[n-1] 升序的排序
bool cmp1(int i,int j)
{return i>j} sort(a,a+n,cmp1);是对a[0]到a[n-1] 降序的排序
#include<iostream>//不管哪种排序 遇到重复都会排在一起
#include<algorithm>
using namespace std;
bool cmp(int i,int j)
{
return i<j;
}
bool cmp1(int i,int j)
{
return i>j;
}
int main()
{
int a[10]={1,2,1,5,6,7,4,3,8,11};
sort(a,a+10);
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
sort(a,a+10,cmp);
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
sort(a,a+10,cmp1);
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
结构体
定义有三种方式:
一:
struct 结构体名称{
数据类型 member1;
数据类型 member2;
}
定义变量 struct 结构体名称 结构体结构体变量名
struct Student{
int sNo;
char name[10];
};
struct Student stu;
sort()函数实现对结构体的排序
ios::sync_with_stdio(false);的作用:取消cin和stdin的同步性加快读取一大串数据的速度http://blog.csdn.net/yujuan_mao/article/details/8119529
string的常规使用
#include<iostream>
using namespace std;
int main()
{
string str1;
cin>>str1;v//举例 str1="ab"
cout<<str1.size()<<endl;
cout<<str1[1]<<endl;
return 0;
}
str1[0]=a;
str1.size()=2;
Hash用来处理表格
int v[5][5]=
{{5,-1,-2,-1,-3},
{-1,5,-3,-2,-4},
{-2,-3,5,-2,-2},
{-1,-2,-2,5,-1},
{-3,-4,-2,-1,0},
};
map<char,int> mapp;//map 点对关系 字符跟数值对应起来 字符可以做下标 通过映射关系 编程效率可以更快
mapp['A']=0;
mapp['C']=1;
mapp['G']=2;
mapp['T']=3;
mapp['_']=4;
可以用来处理这个表格
http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1003&cid=33115就是这个题目的表格
0x3f3f3f3f的使用
0x3f3f3f3f的十进制是1061109567,也就是10^9级别的(和0x7fffffff(32-bit int的最大值)一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。
另一方面,由于一般的数据都不会大于10^9,所以当我们把无穷大加上一个数据时,它并不会溢出(这就满足了“无穷大加一个有穷的数依然是无穷大”),事实上0x3f3f3f3f+0x3f3f3f3f=2122219134,这非常大但却没有超过32-bit int的表示范围,所以0x3f3f3f3f还满足了我们“无穷大加无穷大还是无穷大”的需求。
最大好处:
如果我们想要将某个数组清零,我们通常会使用memset(a,0,sizeof(a)),但是当我们想将某个数组全部赋值为无穷大时(例如解决图论问题时邻接矩阵的初始化),就不能使用memset函数了,因为memset是按字节操作的,它能够对数组清零是因为0的每个字节都是0,现在好了,如果我们将无穷大设为0x3f3f3f3f,那么奇迹就发生了,0x3f3f3f3f的每个字节都是0x3f!
所以要把一段整型数组全部置为无穷大,我们只需要 memset(a,INF,sizeof(a))