से निकाला जा रहा है डुप्लिकेट सालों के लिए मैं निम्नलिखित पद्धति का उपयोग कर सी ++ std::vector
प्रकार का ऑब्जेक्ट से डुप्लिकेट को दूर करने के लिए किया गया है क्यूटी QList<>
कक्षा के साथ, या यदि ऐसा करने के लिए एक और अधिक शानदार तरीका है।एक QList
एक QList
उत्तर
मुझे प्रदर्शन के बारे में पता नहीं है, लेकिन QList
को QSet
में परिवर्तित करने के बारे में क्या?
QList<int> myQList;
//...
QSet<int> = QSet::fromList(myQList);
// or
QSet<int> = myQList.toSet();
(और शायद इसे वापस एक QList
में बदलने का है, तो QList::fromSet() साथ आवश्यक)
वह _is_ एक तरीका है, निश्चित रूप से, लेकिन फिर मैं QSet <> सीधे उपयोग करूंगा।मैं आमतौर पर अनुक्रमिक कंटेनर पसंद करता हूं (जो सबसे अधिक उपयुक्त विकल्प होते हैं), इसलिए QSet <> या std :: set को ओवरकिल माना जा सकता है। –
मुझे लगता है कि यह स्वाद का विषय है: यदि मुझे डुप्लीकेट के बिना तत्वों की एक सूची स्टोर करने की आवश्यकता है, तो मैं हमेशा एक सेट चुनता हूं। हालांकि मैंने कभी प्रदर्शन की तुलना नहीं की। –
ठीक है, मैं 'std :: set' या 'std :: map' का उपयोग करता था, जब तक कि मुझे प्रदर्शन समस्याओं से लड़ना पड़े। अब मैं उस रास्ते जाने से पहले दो बार सोचता हूं ;-)। –
आप इस सूची बना रहे हैं:
फिर परहेज डुप्लिकेट डुप्लिकेट को दूर करने के लिए एक व्यवहार्य विकल्प हो सकता है।
QList<int> cont;
int incomingValue;
if(!cont.contains(incomingValue))
{
cont.append(incomingValue);
}
इसके अतिरिक्त, के बाद से इस QList <> (और न केवल QList < पूर्णांक>) के बारे में एक सवाल ...
कुछ एक कस्टम वर्ग का उपयोग किया जा सकता है, और डुप्लिकेट से बचने के लिए की तरह है।
QVector के साथ यह लगता है:
class SoftDrink
{
public:
int oz
QString flavor
bool operator==(const Beverage &other) const{
uint hash = qHash(flavor)^oz;
uint otherHash = qHash(other.flavor)^other.oz;
return hash == otherHash;
}
}
एक == ऑपरेटर एक की तरह ऊपर QList वारंटी के बिना एक कस्टम डेटाप्रकार
QList<SoftDrink> uniquePurchaseHistory;
SoftDrink newPurchase;
if(!uniquePurchaseHistory.contains(newPurchase)){
uniquePurchaseHistory.append(newPurchase);
}
के खिलाफ होता है() विधि का मूल्यांकन करने की अनुमति दे सकते काम ...
QVector<int> v;
std::sort(v.begin(), v.end());
v.erase(std::unique(v.begin(), v.end()), v.end());//remove duplicates
वेक्टर बैक टी से ओ सूची:
QVector<QString> vect;
vect << "red" << "green" << "blue" << "black";
QList<QString> list = vect.toList();
// list: ["red", "green", "blue", "black"]
- 1. QList
- 2. QList
- 3. एक सादे सरणी से एक QList बनाना
- 4. QList से QML से C++/Qt तक कैसे पास करें?
- 5. क्यूटी - एक QLqlQuery को "कहां ... IN" खंड के साथ QList को कैसे बांधें?
- 6. सी ++ और कॉन्स - एक कॉन्स संदर्भ
- 7. क्यूटी 4.5 - क्यूलिस्ट :: क्यूलिस्ट (कॉन्स क्यूलिस्ट और) - क्या यह एक गहरी प्रतिलिपि है?
- 8. फोरैच का उपयोग करके इसे फिर से चालू करते समय मैं QList से तत्वों को कैसे हटा सकता हूं?
- 9. क्या कोई कारण है कि QVariant केवल QList स्वीकार करता है और QVector और न ही QLinkedList
- 10. QT लाइब्रेरी (शायद qSort()) का उपयोग कर QList <MyClass*> को सॉर्ट करने के लिए कैसे करें?
- 11. QSplitter एक निश्चित आकार विजेट और एक परिवर्तनीय आकार विजेट के साथ?
- 12. क्यूलिस्ट के लिए सूचक - पर() बनाम [] ऑपरेटर
- 13. पीएचपी पुनरावर्ती सभी बच्चे को नष्ट करने के समारोह नोड का कारण बनता है stackoverflow
- 14. सी ++ सर्वोत्तम अभ्यास: रिटर्निंग संदर्भ बनाम ऑब्जेक्ट
- 15. क्यूटी में QListWidget से सभी वस्तुओं के ग्रंथ कैसे प्राप्त करें?
- 16. QVariant या QVariant सूची
- 17. क्यूटी अप्रलेखित विधि setSharable
- 18. चयन को संरक्षित करते समय QSqlTableModel को रीफ्रेश कैसे करें?
- 19. पठनीयता के लिए एसटीएल मुहावरे लपेटना एक अच्छा विचार है?
- 20. क्यूटी क्या शीर्षलेख शामिल करने के लिए?
- 21. एल्गोरिथ्म एक बड़ा एक समस्या एक
- 22. कॉपी एक सीवी :: चटाई एक और एक
- 23. एक Git एक स्क्रिप्ट
- 24. एक क्यूआर एक टुकड़ा
- 25. क्रमबद्ध एक और एक
- 26. एक बड़ा एक
- 27. एक फ्लैट एक
- 28. एक संसाधन एक जार
- 29. एक स्ट्रिंग एक सूचक
- 30. एक प्रकार एक स्ट्रिंग
आप सूचियों के साथ काम कर रहे हैं के रूप में, मुझे लगता है कि std :: सूची का कहना है करना चाहते हैं एक सदस्य प्रकार समारोह जो एसटीडी की तुलना में बेहतर प्रदर्शन किया है :: एक सूची पर तरह है। –
और हाँ बस फिर से खोजे गए, std :: सूची में 'अद्वितीय' सदस्य फ़ंक्शन भी है जिसका अर्थ है कि यह std :: अद्वितीय पर बेहतर है। –
धन्यवाद यह इंगित करने के लिए अमित, लेकिन मैं std :: list <> अधिक का उपयोग नहीं करता (हर्ब सटर की सलाह के बाद कि std :: वेक्टर ज्यादातर मामलों में "दाएं" कंटेनर का उपयोग करने के लिए है; यहां तक कि सी ++ मानक में भी ऐसा है एक सिफारिश, 23.1.1/2 देखें)। –