经常将sort与lower_bound配合使用。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[100];
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n);
cout << "sort over!" << endl;
for (int i = 0; i < n; i++)
{
cout << a[i] << endl;
}
int k;
cout << "请输入你想查找的数字k:" << endl;
cin >> k;
int p = lower_bound(a, a + n, k) - a;
if (a[p] == k)
{
cout << "数字" << k << "存在"<<endl;
cout << "位置为:" << p+1;
}
else
{
cout << "数字"<<k<<"未找到!"<<endl;
}
return 0;
}
sort与lower_bound都在algorithm函数中。
sort使用数组元素默认的大小比较运算符进行排序,只有在需要按照特殊依据进行排序时才需要传入额外的比较函数。另外,sort函数可以对任意对象进行排序,不一定是内置类型。如果此希望用sort排序,这个类型需要定义“小于”运算符,或者在排序时传入一个“小于”函数。排序对象可存在于普通数组里,也可以存在于vector中,前者用sort(a,a+n)的方式调用,后者用sort(v.begin(),v.end())的方式调用。
ower_bound的作用是查找“大于或者等于x的第一个位置”。
vector是不定长数组,不仅如此,它把一些常用操作“封装”在了vector类型内部,
例如,若a是一个vector,可以用a.size()读取它的大小,a.resize()改变大小,a.push_back()向尾部添加元素,a.pop_back()删除最后一个元素,a.clear()清空,empty()测试是否为空,vector之间可以直接赋值或者作为函数的返回值。
vector是一个模板类,因此我们需要用 vector <int> a
这样的方式进行声明一个vector。