STL算法---关系算法(大于/小于/相等/包含)

本文详细介绍了C++ STL中的关系算法,包括equal用于序列的相等比较,includes判断元素是否包含,lexicographical_compare进行字典序比较,以及max/min_element用于找出序列中的最大/最小元素。同时,文章提到了在使用这些算法时需要注意的边界问题。
摘要由CSDN通过智能技术生成

1. equal

[first, last)与[x, x + last - first)每个对应位置的元素相等, 返回true.(默认使用等于操作符) 

重载版本使用输入的操作符代替默认的等于操作符

函数原形

template<class InIt1, class InIt2> bool equal(InIt1 first, InIt1 last, InIt2 x);
template<class InIt1, class InIt2, class Pred> bool equal(InIt1 first, InIt1 last, InIt2 x, Pred pr);

说明: 
1. [first, last)与[x, x + last - first)明显第一点就是数量上要相等, 然后对应位置的值相等.
2. 如果[first, last).size > [x, x + last - first).size, 那么就会报错.(在equal内部, 进行++x操作, 如果越界了就会报错).
3. 必须从[first, last)每一个元素都要匹配.
/
#include "stdafx.h"
#include <algorithm>
#include <numeric>
#include <functional>
#include <vector>
#include <iostream>

int _tmain(int argc, _TCHAR* argv[])
{
	std::vector<int> nV, nV1;
	std::vector<int>::iterator iter;
	std::vector<int>::iterator iterBegin;
	std::vector<int>::iterator iterEnd;

	
	nV.clear();
	nV.push_back(14);
	nV.push_back(15);
	nV.push_back(16);

	nV1.clear();
	nV1.push_back(14);
	nV1.push_back(15);
	nV1.push_back(16);

	iterBegin = nV1.begin();
	iterEnd = nV1.end();	
	std::equal(iterBegin, iterEnd, nV.begin());	// 返回true

	
	nV.clear();
	nV.push_back(14);
	nV.push_back(16);
	nV.push_back(15);
	nV.push_back(17);

	nV1.clear();
	nV1.push_back(14);
	nV1.push_back(16);
	nV1.push_back(15);

	iterBegin = nV1.begin();
	iterEnd = nV1.end();	
	std::equal(iterBegin, iterEnd, nV.begin());	// 返回true

	
	nV.clear();
	nV.push_back(14);
	nV.push_back(17);
	nV.push_back(15);
	nV.push_back(16);

	nV1.clear();
	nV1.push_back(14);
	nV1.push_back(16);
	nV1.push_back(15);
	nV1.push_back(16);

	iterBegin = nV1.begin();
	iterEnd = nV1.end();	
	std::equal(iterBegin, iterEnd, nV.begin());	// 返回false

	
	nV.clear();
	nV.push_back(14);
	nV.push_back(15);
	nV.push_back(16);

	nV1.clear();
	nV1.push_back(14);
	nV1.push_back(15);
	nV1.push_back(16);
	nV1.push_back(16);

	iterBegin = nV1.begin();
	iterEnd 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值