C++提高——STL中常用的查找算法

1、adjacent_find()

在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器。否则返回past-the-end。

	vector<int> vecInt;
	
	vecInt.push_back(1);
	vecInt.push_back(2);
	vecInt.push_back(2);
	vecInt.push_back(4);
	vecInt.push_back(5);
	vecInt.push_back(5);

	vector<int>::iterator it = adjacent_find(vecInt.begin(), vecInt.end());		
	//*it == 2

2、binary_search

在有序序列中查找value,找到则返回true。注意:在无序序列中,不可使用。

		set<int> setInt;
		
		setInt.insert(3);
		setInt.insert(1);
		setInt.insert(7);
		setInt.insert(5);
		setInt.insert(9);

		bool bFind = binary_search(setInt.begin(),setInt.end(),5);

3、count()

利用等于操作符,把标志范围内的元素与输入值比较,返回相等的个数。

		vector<int> vecInt;
		
		vecInt.push_back(1);
		vecInt.push_back(2);
		vecInt.push_back(2);
		vecInt.push_back(4);
		vecInt.push_back(2);
		vecInt.push_back(5);
		
		int iCount = count(vecInt.begin(),vecInt.end(),2);	//iCount==3

4、count_if()

假设vector<int> vecIntA,vecIntA包含1,3,5,7,9元素


//先定义比较函数
bool GreaterThree(int iNum)
{
		if(iNum>=3)
		{
			return true;
		}
		else
		{
			return false;
		}
}

int iCount = count_if(vecIntA.begin(), vecIntA.end(), GreaterThree);
//此时iCount == 4

5、find()

-	find:  利用底层元素的等于操作符,对指定范围内的元素与输入值进行比较。
-		   当匹配时,结束搜索,返回该元素的迭代器。
-	
-	equal_range: 返回一对iterator,第一个表示lower_bound,
-				 第二个表示upper_bound。

		vector<int> vecInt;
		vecInt.push_back(1);
		vecInt.push_back(3);
		vecInt.push_back(5);
		vecInt.push_back(7);
		vecInt.push_back(9);

		vector<int>::iterator it = find(vecInt.begin(), vecInt.end(), 5);		
		//*it == 5

6、find_if()

find_if: 使用输入的函数代替等于操作符执行find。返回被找到的元素的迭代器。

假设vector<int> vecIntA,vecIntA包含1,3,5,3,9元素 
vector<int>::it = find_if(vecInt.begin(),vecInt.end(),GreaterThree);
此时 *it==3, *(it+1)==5, *(it+2)==3, *(it+3)==9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值