क्या सी ++ एसटीएल सेट डेटा संरचना में एक सेट अंतर ऑपरेटर है?सी ++ एसटीएल सेट अंतर
उत्तर
हां, एल्गोरिदम शीर्षलेख में set_difference फ़ंक्शन है।
संपादन:
FYI करें, सेट डेटा संरचना कुशलता, कि एल्गोरिथ्म का उपयोग करने के रूप में अपनी documentation में कहा गया है में सक्षम है। एल्गोरिदम भी सेट पर नहीं बल्कि सॉर्ट किए गए संग्रहों पर इटरेटर की किसी भी जोड़ी पर काम करता है।
जैसा कि अन्य ने उल्लेख किया है, यह एक बाहरी एल्गोरिदम है, एक विधि नहीं। संभवतः यह आपके आवेदन के लिए ठीक है।
लेकिन वहाँ बाहरी एल्गोरिथ्म समारोह set_difference
template <class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator set_difference(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
OutputIterator result);
जाहिर है, यह करता है।
एक "ऑपरेटर" भाषा अर्थ में, लेकिन वहाँ मानक पुस्तकालय में set_difference एल्गोरिथ्म है:
http://www.cplusplus.com/reference/algorithm/set_difference.html
बेशक, अन्य बुनियादी सेट के संचालन भी मौजूद हैं - (यूनियन इत्यादि), जैसा कि लिंक किए गए आलेख के अंत में "यह भी देखें" अनुभाग द्वारा सुझाया गया है।
हां वहाँ है, यह <algorithm>
में है और इसे std::set_difference
कहा जाता है। सेट result
s1-s2
शामिल होंगे
#include <algorithm>
#include <set>
#include <iterator>
// ...
std::set<int> s1, s2;
// Fill in s1 and s2 with values
std::set<int> result;
std::set_difference(s1.begin(), s1.end(), s2.begin(), s2.end(),
std::inserter(result, result.end()));
अंत में,: उपयोग है।
+1। अफसोस की बात है, जब मुझे इसकी आवश्यकता थी, मैंने अपना खुद का लूप छोड़ दिया और रोल किया :( – peterchen
बीटीडब्ल्यू, यदि आप एक गैर-सहयोगी कंटेनर क्लास पर set_difference का उपयोग करते हैं, तो वेक्टर कहें, सुनिश्चित करें कि दोनों कंटेनरों में तत्व पहले क्रमबद्ध किए गए हैं ... ? – paxos1977
# शामिल
चयनित उत्तर सही है, लेकिन कुछ वाक्यविन्यास त्रुटियां हैं।
के बजाय#include <algorithms>
उपयोग
#include <algorithm>
के बजाय
std::insert_iterator(result, result.end()));
उपयोग
std::insert_iterator<set<int> >(result, result.end()));
या बस' std :: inserter (परिणाम, result.end()) ' – rlbond
हम सिर्फ एक बार फिर
set_difference(set1.begin(), set1.end(), set2.begin(). set2,end(),std::back_inserter(result)).
' std :: back_inserter' का उपयोग करें लक्ष्य कंटेनर 'परिणाम' पर' push_back() 'विधि। यह 'काम'' std :: set' होने पर काम नहीं करेगा – Attila
उपयोग कर सकते हैं, बचाव के लिए बढ़ावा देने के:
#include <string>
#include <set>
#include <boost/range/algorithm/set_algorithm.hpp>
std::set<std::string> set0, set1, setDifference;
boost::set_difference(set0, set1, std::inserter(setDifference, setDifference.begin());
setDifference set0-SET1 शामिल होंगे।
सी ++ एक सेट अंतर ऑपरेटर को परिभाषित नहीं करता, लेकिन आप अपने खुद के (कोड का उपयोग अन्य प्रतिक्रियाओं में दी गई) को परिभाषित कर सकते हैं:
template<class T>
set<T> operator -(set<T> reference, set<T> items_to_remove)
{
set<T> result;
std::set_difference(
reference.begin(), reference.end(),
items_to_remove.begin(), items_to_remove.end(),
std::inserter(result, result.end()));
return result;
}
- 1. सी ++ एसटीएल में एसटीएल
- 2. एसटीएल सेट
- 3. सी ++ एसटीएल
- 4. मेमोरी लीक्स - एसटीएल सेट
- 5. सी ++ एसटीएल
- 6. सी ++ एसटीएल
- 7. सी ++ एसटीएल प्रश्न: आवंटक
- 8. सी ++ एसटीएल कंटेनर
- 9. सी ++ एसटीएल में सेट और हैशसेट के बीच क्या अंतर है?
- 10. सी ++ यूनिकोड और एसटीएल
- 11. एसटीएल सेट में कैसे डालें?
- 12. एसटीएल
- 13. सी ++ में एसटीएल सेट की अंतर्निहित डेटा संरचना क्या है?
- 14. सी ++: एसटीएल multimap.equal_range()
- 15. सी ++ एसटीएल जेमलोक
- 16. उपयोग सी ++ एसटीएल
- 17. सी ++ एसटीएल निकालें त्रुटि
- 18. सी ++ एसटीएल-अनुरूप ऑलोकेटर्स
- 19. आरएआईआई और सी ++ एसटीएल
- 20. क्यों सी ++ एसटीएल
- 21. बाइनरी खोज सी ++ एसटीएल
- 22. गतिशील सरणी बनाम एसटीएल वैक्टर सटीक अंतर?
- 23. एक्सकोड में सी/सी ++ लाइब्रेरी और एसटीएल सी ++ लाइब्रेरी के बीच क्या अंतर है?
- 24. एसटीएल
- 25. सी ++ और एसटीएल रीफ्रेशर कोर्स
- 26. 2-आयामी एसटीएल वेक्टर सी ++
- 27. जावा डेटास्ट्रक्चर/सी ++ एसटीएल समकक्ष?
- 28. सी ++ एसटीएल वेक्टर इटरेटर ऑब्जेक्ट
- 29. LINQ और सेट अंतर
- 30. एसटीएल
यह क्रमबद्ध कंटेनरों के _any_ जोड़ी पर किया जा सकता। – xtofl
अच्छा बिंदु ... मैंने संपादन में एक नोट जोड़ा है। –