c++----sort、lower_bound和vector

本文详细介绍了如何在C++中使用sort和lower_bound函数,通过示例代码展示了对数组进行排序并查找特定元素的过程。文章还解释了sort函数的通用性和lower_bound的查找原理。

经常将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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值