日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言equal(),C ++中的std :: equal()

發布時間:2024/4/19 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言equal(),C ++中的std :: equal() 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

equal()作為STL函數

語法:bool?equal(

InputIterator1?first1,

InputIterator1?last1,

InputIterator2?first2);

哪里,InputIterator1 first =迭代器,開始第一個序列范圍

InputIterator1 last1 =迭代器到第一個序列范圍的結尾

InputIterator2 first2 =迭代器開始第二個序列范圍

返回類型: boolTrue-如果兩個范圍內的所有元素都相同

False-如果兩個范圍內的所有元素都不相同

上面的語法用于使用標準==運算符比較元素。

我們還可以定義用戶定義的二進制謂詞(而不是'==')來檢查是否相等。用戶定義的二進制謂詞的語法如下:

(二元謂詞是一個帶有兩個參數并僅返回true或false的函數。)bool?equal(

InputIterator1?first1,

InputIterator1?last1,

InputIterator2?first2,

BinaryPredicate?pred);

使用上述語法,可以通過謂詞檢查相應范圍的元素。

因此,我們發現第二個范圍的最后一個迭代器沒有共享,因為它只會比較范圍1相同數量的元素。而且,它將順序檢查,這意味著[1、3、5]和[5] ,, 3,1]不一樣。因此,兩個范圍的順序必須相同。

1)使用默認的'=='/'!='運算符#include?

using?namespace?std;

int?main(){

vector?arr1{?3,?2,?1,?4,?5,?6,?7?};

vector?arr2{?3,?2,?1,?4,?5?};

if?(equal(arr1.begin(),?arr1.begin()?+?5,?arr2.begin()))?{

cout?<

}

else

cout?<

vector?arr3{?1,?2,?3,?4,?5,?6,?7?};

vector?arr4{?1,?2,?3,?4,?5?};

if?(equal(arr3.begin(),?arr3.end(),?arr4.begin()))?{

cout?<

}

else

cout?<

return?0;

}

輸出:both?ranges?are?exactly?equal

both?ranges?are?not?exactly?equal

在上面的程序中,我們檢查了兩種情況,并使用了默認的比較器。在第一種情況下,

第一個范圍是arr1.begin()到arr1.begin()+ 5,即arr1的僅前五個元素。第二個范圍從arr2.begin()開始,它將僅從range2的開始檢查前五個元素。由于兩者相同,因此是匹配項。

[3,2,1,4,5]

在第二種情況下,由于我們使用了arr3的總范圍,因此這是不匹配的。

2)使用用戶定義的比較器功能

在這里,我們以一個用例為例,我們有兩個向量用于學生詳細信息,每個向量有五個學生。通過使用用戶定義的預測,我們將檢查兩個列表是否相等。如果每個學生的詳細信息都匹配,則兩個列表都相等。要使學生詳細信息匹配,所有詳細信息(名次,姓名,分數)必須相同。#include?

using?namespace?std;

class?student?{

int?score;

int?roll;

string?name;

public:????student()

{

score?=?0;

roll?=?0;

name?=?"";

}

student(int?sc,?int?ro,?string?nm)

{

score?=?sc;

roll?=?ro;

name?=?nm;

}

int?get_score()

{

return?score;

}

int?get_roll()

{

return?roll;

}

string?get_name()

{

return?name;

}

};

bool?pred(student?a,?student?b)

{

//如果所有細節都相同,則返回true,否則返回false-

if?(a.get_name()?==?b.get_name()?&&?a.get_score()?==?b.get_score()?&&?a.get_roll()?==?b.get_roll())

return?true;

return?false;

}

int?main(){

//第一個列表

vector?arr1(5);

//第一名學生

arr1[0]?=?student(80,?5,?"XYZ");?//卷5,標記80-

//第二名學生

arr1[1]?=?student(70,?10,?"INC");?//卷10,標記70-

//第三學生

arr1[2]?=?student(85,?7,?"HYU");?//卷7,標記85-

//第四名學生

arr1[3]?=?student(83,?1,?"EFG");?//卷1,標記83-

//第五名學生

arr1[4]?=?student(81,?11,?"ABC");?//卷11,標記81-

//第二個列表

vector?arr2(5);

//第一名學生

arr2[0]?=?student(80,?5,?"XYZ");?//卷5,標記80-

//第二名學生

arr2[1]?=?student(70,?10,?"INC");?//卷10,標記70-

//第三學生

arr2[2]?=?student(85,?7,?"HYU");?//卷7,標記85-

//第四名學生

arr2[3]?=?student(83,?1,?"EFG");?//卷1,標記83-

//第五名學生

arr2[4]?=?student(81,?11,?"ABC");?//卷11,標記81-

//查找檢查兩個列表是否相等

//基于用戶定義的謂詞

if?(equal(arr1.begin(),?arr1.end(),?arr2.begin(),?pred))

cout?<

else

cout?<

//第三列表

vector?arr3(5);

//第一名學生

arr3[0]?=?student(89,?5,?"PVR");?//卷5,標記89-

//第二名學生

arr3[1]?=?student(70,?10,?"INC");?//卷10,標記70-

//第三學生

arr3[2]?=?student(85,?7,?"HYU");?//卷7,標記85-

//第四名學生

arr3[3]?=?student(83,?1,?"EFG");?//卷1,標記83-

//第五名學生

arr3[4]?=?student(81,?11,?"ABC");?//卷11,標記81-

//查找檢查兩個列表是否相等?based

//在用戶定義的謂詞上

if?(equal(arr1.begin(),?arr1.end(),?arr3.begin(),?pred))

cout?<

else

cout?<

return?0;

}

輸出:Both?lists?arr1,arr2?are?equal

Both?lists?arr1,arr3?are?not?equal

在這里,我們首先創建了兩個具有相同元素的列表。由于兩個列表的大小相等,因此我們發現等于返回true。對于第二種情況,我們更改了arr3中的元素以使其不相等,并且在輸出中反映出相同的內容。在我們用戶定義的謂詞中,如果所有細節都匹配兩個學生,我們將返回true。

因此,在本文中,您看到了我們可以使用equal來檢查兩個范圍是否相等的效率。這種方法的應用可以是檢查一個數組是否是另一個數組的子數組。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的C语言equal(),C ++中的std :: equal()的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。