C++ 算法 includes() 如果在排序範圍 [first1, last1) 內找到排序範圍 [first2, last2) 中的每個元素,則函數返回 true。
如果 [first2, last2) 為空,它也會返回 true。
對於第一個版本使用運算符 < 比較元素,或者對於第二個版本使用給定的二進製比較函數 comp 比較元素。
用法
template <class InputIterator1, class InputIterator2>
bool includes ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2);
template <class InputIterator1, class InputIterator2, class Compare>
bool includes ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2, Compare comp);
參數
first1:一個輸入迭代器,指向兩個已排序的源序列中第一個中的第一個元素,要測試第二個的所有元素是否都在第一個中被占用。
last1:一個輸入迭代器,指向兩個已排序源序列中第一個的最後一個元素,以測試第二個的所有元素是否包含在第一個中。
first2:一個輸入迭代器,指向第二個已排序的源序列中的第一個元素,要測試第二個的所有元素是否都包含在第一個中。
last2:一個 input-iterator 指向第二個已排序源序列中過去的最後一個元素,以測試第二個的所有元素是否都包含在第一個中。
comp: 一個用戶定義的二元謂詞函數,它接受兩個參數,如果兩個參數按順序返回真,否則返回假。它遵循嚴格的弱排序來對元素進行排序。
返回值
如果 [first2, last2) 中的每個元素都是 [first1, last1) 的成員,則此函數返回 true,否則返回 false。
複雜度
複雜性在 [first1, last1) 和 [first2, last2) 之間的距離上是線性的:執行多達 2*(count1+count2)-1 次比較。其中 count1 = last1- first1 和 count2 = last2- first2。
數據競爭
範圍 [first1, last1) 和 [first2. last2) 被訪問。
異常
如果任何元素比較或迭代器上的操作引發異常,則此函數將引發異常。
注意:無效的參數會導致未定義的行為。
例子1
讓我們看一個簡單的例子來演示 includes() 的使用:
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
int main()
{
set<int> a = {0, 2, 3, 4, 5, 6};
set<int> b = {2, 4, 6};
set<int> c = {2, 4, 7};
cout << boolalpha;
cout << includes(a.begin(), a.end(), b.begin(), b.end()) << endl;
cout << includes(a.begin(), a.end(), c.begin(), c.end()) << endl;
return 0;
}
輸出:
true false
例子2
讓我們看另一個簡單的例子:
#include <iostream>
#include <algorithm>
#include <cctype>
#include <vector>
using namespace std;
int main()
{
vector<char> v1 {'a', 'b', 'c', 'f', 'h', 'x'};
vector<char> v2 {'a', 'b', 'c'};
vector<char> v3 {'a', 'c'};
vector<char> v4 {'g'};
vector<char> v5 {'a', 'c', 'g'};
for (auto i:v1) cout << i << ' ';
cout << "\nincludes:\n" << boolalpha;
for (auto i:v2) cout << i << ' ';
cout << ":" << includes(v1.begin(), v1.end(), v2.begin(), v2.end()) << '\n';
for (auto i:v3) cout << i << ' ';
cout << ":" << includes(v1.begin(), v1.end(), v3.begin(), v3.end()) << '\n';
for (auto i:v4) cout << i << ' ';
cout << ":" << includes(v1.begin(), v1.end(), v4.begin(), v4.end()) << '\n';
for (auto i:v5) cout << i << ' ';
cout << ":" << includes(v1.begin(), v1.end(), v5.begin(), v5.end()) << '\n';
auto cmp_nocase = [](char a, char b) {
return std::tolower(a) < std::tolower(b);
};
vector<char> v6 {'A', 'B', 'C'};
for (auto i:v6) cout << i << ' ';
cout << ":(case-insensitive) "
<< includes(v1.begin(), v1.end(), v6.begin(), v6.end(), cmp_nocase)
<< '\n';
return 0;
}
輸出:
a b c f h x includes: a b c:true a c:true g:false a c g:false A B C:(case-insensitive) true
例子3
讓我們看另一個簡單的例子:
#include <iostream> // std::cout
#include <algorithm> // std::includes, std::sort
using namespace std;
bool myfunction (int i, int j) { return i<j; }
int main () {
int container[] = {5,10,15,20,25,30,35,40,45,50};
int continent[] = {40,30,20,10};
sort (container,container+10);
sort (continent,continent+4);
// using default comparison:
if ( includes(container,container+10,continent,continent+4) )
cout << "container includes continent!\n";
// using myfunction as comp:
if ( includes(container,container+10,continent,continent+4, myfunction) )
cout << "container includes continent!\n";
return 0;
}
輸出:
container includes continent! container includes continent!
示例 4
讓我們看一個簡單的例子:
#include <iostream> // std::cout
#include <algorithm> // std::includes, std::sort
using namespace std;
int main()
{
// lottery numbers
vector<int> lottery = { 1, 4, 6, 3, 2, 54 , 32 };
// Numbers in user's card
vector<int> user = { 1, 2, 4, 6 };
// sorting initial containers
sort(lottery.begin(), lottery.end());
sort(user.begin(), user.end());
// using include() check if all elements
// of user are present as lottery numbers
if(includes(lottery.begin(), lottery.end(), user.begin(), user.end()))
cout << "User has won lottery ( all numbers are lottey numbers )";
else
cout << "User has not won the lottery";
return 0;
}
輸出:
User has won lottery ( all numbers are lottey numbers )
相關用法
- C++ Algorithm inplace_merge()用法及代碼示例
- C++ Algorithm is_sorted()用法及代碼示例
- C++ Algorithm is_partitioned()用法及代碼示例
- C++ Algorithm iter_swap()用法及代碼示例
- C++ Algorithm is_heap()用法及代碼示例
- C++ Algorithm is_sorted_until()用法及代碼示例
- C++ Algorithm is_heap_until()用法及代碼示例
- C++ Algorithm remove_if()用法及代碼示例
- C++ Algorithm remove()用法及代碼示例
- C++ Algorithm max_element()用法及代碼示例
- C++ Algorithm set_union()用法及代碼示例
- C++ Algorithm next_permutation()用法及代碼示例
- C++ Algorithm upper_bound()用法及代碼示例
- C++ Algorithm minmax()用法及代碼示例
- C++ Algorithm remove_copy_if()用法及代碼示例
- C++ Algorithm random_shuffle()用法及代碼示例
- C++ Algorithm pop_heap()用法及代碼示例
- C++ Algorithm replace()用法及代碼示例
- C++ Algorithm set_intersection()用法及代碼示例
- C++ Algorithm lower_bound()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ Algorithm includes()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。