C++算法iter_swap()和lexicographical_compare()

iter_swap() :元素替换

void iter_swap(_FwdIt1 _Left, _FwdIt2 _Right)


返回值:void
参数1:迭代器指针1
参数2:迭代器指针2
作用:将迭代器指针1的值与迭代器指针2的值进行对调。(两个参数可以是不同的容器中的迭代器指针)

main.cpp

//输出arr
void showarr(vector<int> &Arr)
{
	vector<int>::iterator iteArr = Arr.begin();
	for (iteArr ; iteArr != Arr.end(); iteArr++)
	{
		cout << *iteArr << "\t";
	}
	cout << endl;
}

void main()
{
	//首先创建一个容器,需要包含vector头文件
	vector<int> arr = {1,2,3,4};
	//输出一下
	showarr(arr);
	//然后使用iter_swap(),将arr.begin()的值和arr.end()-1即最后一个值的位置对换。
	iter_swap(arr.begin(),arr.end()-1);
	//这时输出arr为:4,2,3,1
	showarr(arr);
}

lexicographical_compare() :以字典排序方式比较

bool lexicographical_compare(_InIt1 _First1, _InIt1 _Last1,_InIt2 _First2, _InIt2 _Last2)


返回值:bool
参数1:容器1的迭代器指针(开头)
参数2:容器1的迭代器指针(结尾)
参数3:容器2的迭代器指针(开头)
参数4:容器3的迭代器指针(结尾)
作用:当容器2的值以字典排序方式比较大于容器1的值时,返回true

	//首先创建两个容器
	vector<int> arr2 = { 1,2,3,4 };
	vector<int> arr3 = { 1,2,4,4 };
	//使用
	bool isOK = lexicographical_compare(arr2.begin(),arr2.end(),
										arr3.begin(),arr3.end());
	//当arr3大于arr2时返回true
	if(isOK)
	{
		cout << "nice";
	}
	else
	{
		cout << "。。。。。";
	}
	//这个结果返回的是true,会输出nice

上方怎么比较有点模糊,还是多举一点例子吧。以至于讲的

	vector<int> arr2 = { 1,2,3,4 };
	vector<int> arr3 = { 1,2,3,4 };
	//当两个相等时,返回false
	
	vector<int> arr2 = { 2,2,3,4 };
	vector<int> arr3 = { 1,2,3,4 };
	//这个返回false

	vector<int> arr2 = { 2,2,3,4 };
	vector<int> arr3 = { 1,6,3,4 };
	//这个返回false,看到了这里发现了什么没有

这个按字典排序比较,是按照index来进行比较的。开始时,用容器2的第1个值与容器1的第一个值进行比较,一直往下推,若容器1和容器2的值相同,继续进行比较;若在途中容器1中值大于容器2的值,直接返回false,退出比较;若在途中容器1中值小于容器2的值,直接返回true,退出比较。

使用该函数比较字符串也是一样的。字符长度和字符一样,继续循环;原理差不多的啦。对了有一点要注意的,中文和英文比较是比较不了的!,比较的语言要一致啊,亲。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值