今天正好碰到了這個函數(shù),雖然大概可以猜出這個函數(shù)的作用,但是仍然期待一個通俗易懂的解釋,網(wǎng)上搜索了一下,搜到百度百科,感覺沒有抓住重點,雖然示例也勉強可以理解,但是總感覺講究不夠直觀。
下圖綠色部分就是這個函數(shù)的功能了。
?
于是,最終在Notion的幫助下,我得到了以下回答,我覺得這個講解很棒,而且示例中很貼心第改變了輸出數(shù)組的大小。
set_difference
是C++中的一個函數(shù),它接受兩個有序的范圍作為輸入,并輸出在第一個范圍中但不在第二個范圍中的元素。輸出寫入到一個第三個范圍中,該范圍必須足夠大以容納所有輸出的元素。
以下是set_difference
的函數(shù)簽名:
template <class InputIt1, class InputIt2, class OutputIt>
OutputIt set_difference(InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2,
OutputIt d_first);
第一個和第二個輸入范圍由迭代器first1
和last1
,first2
和last2
指定。第三個范圍由迭代器d_first
指定。該函數(shù)返回指向輸出范圍結(jié)尾的迭代器。
以下是set_difference
的一個示例用法:
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> v1 = {1, 2, 3, 4, 5};
std::vector<int> v2 = {2, 4, 6};
std::vector<int> result(v1.size());
auto it = std::set_difference(v1.begin(), v1.end(),
v2.begin(), v2.end(),
result.begin());
result.resize(it - result.begin());
for (auto i : result) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
在此示例中,我們有兩個向量v1
和v2
。我們想要找到在v1
中但不在v2
中的元素。我們創(chuàng)建一個大小與v1
相同的第三個向量result
,并將其開始迭代器傳遞給set_difference
。輸出寫入到result
中,并且該函數(shù)返回指向輸出范圍結(jié)尾的迭代器。然后,我們將result
調(diào)整為輸出范圍的大小,并打印其內(nèi)容。
該程序的輸出結(jié)果為:
1 3 5
這是v1
和v2
的集合差異。文章來源:http://www.zghlxwxcb.cn/news/detail-430131.html
歡迎交流與討論。文章來源地址http://www.zghlxwxcb.cn/news/detail-430131.html
到了這里,關于c++中set_difference這個函數(shù)的意義和用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!