क्या सी ++ में पाइथन के set.pop()
के बराबर है? मैं unordered_set
s here के लिए प्रलेखन को देख रहा हूं, लेकिन ऐसा कोई प्रतीत नहीं होता है 1. एक मनमानी तत्व तक पहुंचें, और/या 2. एक्सेस + एक मनमानी तत्व (पॉपिंग) को हटा दें।सी ++ के अनियंत्रित सेट के लिए पायथन के set.pop() के बराबर
उत्तर
ध्यान दें कि सी ++ मानक पुस्तकालय जानबूझकर तैयार किया गया है ताकि विभिन्न कंटेनर विनिर्देशों एक "हो जाते हैं और निकालें" समारोह में शामिल नहीं है: उदाहरण vector
के लिए, आपके पास back()
है जो अंत में मान देता है, और आपके पास pop_back()
है जो अंत में मूल्य को हटा देता है, लेकिन इसे वापस नहीं करता है।
इसके कारण भी एक अलग प्रश्न की सामग्री हो सकते हैं।
तो क्या आप वास्तव में चाहते हैं एक तत्व (जैसे begin()
टिप्पणी में सुझाव के रूप में) प्राप्त करने के लिए एक विधि है, और फिर इसे दूर करने के लिए एक बार आप इसे मिल गया है (उदाहरण के लिए erase(iterator)
अन्य जवाब में उल्लेख किया)।
मानक द्वारा उस इरादे के कारणों से कोई संदर्भ? –
समतुल्य unordered_set.erase मुझे लगता है। http://www.cplusplus.com/reference/unordered_set/unordered_set/erase/
आप पहले तत्व पॉप कर सकते हैं या तो
auto i = *set.begin();
set.erase(set.begin());
या यदि आप बहुत ज्यादा कार्यान्वयन से परिभाषित बाल्टी के आंतरिक आदेश को लेकर चिंतित हैं (संकेत: आप शायद नहीं होना चाहिए), तो आप एक को दूर कर सकता है
#include <unordered_set>
#include <iostream>
#include <random>
int main()
{
std::unordered_set<int> set{0, 1, 2, 3, 4, 5};
std::default_random_engine ran{std::random_device{}()};
auto it = set.begin();
std::advance(it, std::uniform_int_distribution<>{0, set.size() - 1}(ran));
std::cout << *it << '\n';
set.erase(it);
}
ऊपर
की तरह कुछ के साथ यादृच्छिक तत्व लेकिन विशेष रूप से प्रभावी नहीं है और आप एक std::vector
भरने, डुप्लिकेट को दूर करने, आदेश randomizing और फिर बस pop_back
elemen ing से बेहतर हो सकता है ts।
#include <algorithm>
#include <vector>
#include <iostream>
#include <random>
int main()
{
std::vector<int> vec{0, 1, 2, 3, 3, 4, 5, 5};
std::sort(vec.begin(), vec.end());
vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
std::shuffle(
vec.begin(),
vec.end(),
std::default_random_engine{std::random_device{}()}
);
while (!vec.empty()) {
std::cout << vec.back() << '\n';
vec.pop_back();
}
}
(अपने मंच random_device
के आधार पर N.B. एक बहुत अच्छा बीज नहीं हो सकता है)।
- 1. सी ++ पायथन के सिद्धांतों के बराबर है?
- 2. सी ++ पायथन लेन() फ़ंक्शन के बराबर है?
- 3. पायथन के पर्ल के बराबर (<>) {...}?
- 4. सी # जावा के Thread.setDaemon के बराबर?
- 5. PHP पायथन के समकक्ष() के बराबर है?
- 6. सी ++ उदाहरण के बराबर
- 7. सी ++ "सुपर" के बराबर?
- 8. पायथन के बराबर "perl -V"
- 9. जावा के ArrayList करने के लिए उद्देश्य सी बराबर
- 10. पासपोर्ट.जेएस पायथन के बराबर है?
- 11. संरचित डेटा के लिए अनियंत्रित पाठ
- 12. string.plit() के अनियंत्रित अधिभार?
- 13. सी ++ डेवलपर्स के लिए पायथन
- 14. सी ++ चार पर memset के लिए बराबर *
- 15. जीडब्ल्यूटी के बराबर .NET के लिए?
- 16. जावा के बराबर सी # के "आंतरिक"
- 17. सी ++ .NET के कार्य के बराबर। डेले?
- 18. क्या 'पायदान' के बराबर एक पायथन है
- 19. सी # VB.NET के पकड़ने के बराबर ... जब
- 20. डेल्फी - सी # के टर्नरी ऑपरेटर के बराबर?
- 21. सी ++/सीएलआई सी # के डिफ़ॉल्ट (टी) के बराबर क्या है?
- 22. सी # जावा के charAt() के बराबर है?
- 23. सी # के विस्तार विधियों के बराबर स्कैला?
- 24. सी # के जार फ़ाइलों के बराबर है?
- 25. सी # जावा के mkdirs के बराबर()
- 26. सेट के लिए एक अलग बराबर विधि क्यों है?
- 27. पायथन के बराबर perl vec() फ़ंक्शन
- 28. सी # के लिए "विस्तारित" के बराबर कोई समकक्ष?
- 29. स्ट्रिंग के लिए सी # में स्कैनर क्लास के बराबर है?
- 30. जावा बराबर सी # TimeSpan के
चूंकि यह * अनियंत्रित * है, परिभाषा() और अंत() परिभाषा के अनुसार "मनमानी" नहीं है? पाइथन शायद कवर के तहत कुछ ऐसा कर रहा है। – swstephe
सच है ... मैं बस अपने कार्यक्रम के उस कार्यान्वयन के साथ रह सकता हूं। – hlin117