柚子快報(bào)邀請(qǐng)碼778899分享:算法 開發(fā)語(yǔ)言 c++中set
柚子快報(bào)邀請(qǐng)碼778899分享:算法 開發(fā)語(yǔ)言 c++中set
今天正好碰到了這個(gè)函數(shù),雖然大概可以猜出這個(gè)函數(shù)的作用,但是仍然期待一個(gè)通俗易懂的解釋,網(wǎng)上搜索了一下,搜到百度百科,感覺沒有抓住重點(diǎn),雖然示例也勉強(qiáng)可以理解,但是總感覺講究不夠直觀。
下圖綠色部分就是這個(gè)函數(shù)的功能了。
?
于是,最終在Notion的幫助下,我得到了以下回答,我覺得這個(gè)講解很棒,而且示例中很貼心第改變了輸出數(shù)組的大小。
set_difference是C++中的一個(gè)函數(shù),它接受兩個(gè)有序的范圍作為輸入,并輸出在第一個(gè)范圍中但不在第二個(gè)范圍中的元素。輸出寫入到一個(gè)第三個(gè)范圍中,該范圍必須足夠大以容納所有輸出的元素。
以下是set_difference的函數(shù)簽名:
template
OutputIt set_difference(InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2,
OutputIt d_first);
第一個(gè)和第二個(gè)輸入范圍由迭代器first1和last1,first2和last2指定。第三個(gè)范圍由迭代器d_first指定。該函數(shù)返回指向輸出范圍結(jié)尾的迭代器。
以下是set_difference的一個(gè)示例用法:
#include
#include
#include
int main() {
std::vector
std::vector
std::vector
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;
}
在此示例中,我們有兩個(gè)向量v1和v2。我們想要找到在v1中但不在v2中的元素。我們創(chuàng)建一個(gè)大小與v1相同的第三個(gè)向量result,并將其開始迭代器傳遞給set_difference。輸出寫入到result中,并且該函數(shù)返回指向輸出范圍結(jié)尾的迭代器。然后,我們將result調(diào)整為輸出范圍的大小,并打印其內(nèi)容。
該程序的輸出結(jié)果為:
1 3 5
這是v1和v2的集合差異。
歡迎交流與討論。
柚子快報(bào)邀請(qǐng)碼778899分享:算法 開發(fā)語(yǔ)言 c++中set
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。