Qt
क्यूटी कंटेनर कक्षाएं
खोज…
टिप्पणियों
क्यूटी अपने स्वयं के टेम्पलेट कंटेनर कक्षाएं प्रदान करता है। वे सभी अंतर्निहित रूप से साझा किए गए हैं। वे दो प्रकार के पुनरावृत्तियों (जावा शैली और एसटीएल शैली) प्रदान करते हैं।
Qt अनुक्रमिक कंटेनरों में शामिल हैं: QVector, QList, QLinkedList, QStack, QQueue।
Qt सहयोगी कंटेनरों में शामिल हैं: QMap, QMultiMap, QHash, QMultiHash, QSet।
QStack उपयोग
QStack<T>
एक टेम्पलेट Qt वर्ग है जो स्टैक प्रदान करता है। एसटीएल में इसका एनालॉग std::stack
। यह आखिरी में है, पहला आउट स्ट्रक्चर (LIFO)।
QStack<QString> stack;
stack.push("First");
stack.push("Second");
stack.push("Third");
while (!stack.isEmpty())
{
cout << stack.pop() << endl;
}
यह आउटपुट देगा: तीसरा, दूसरा, पहला।
QStack
से विरासत में मिली QVector
तो इसके कार्यान्वयन एसटीएल से काफी अलग है। एसटीएल std::stack
को एक टेम्परर के रूप में कार्यान्वित किया जाता है, जिसे टेम्पलेट तर्क के रूप में पारित किया जाता है (डिफ़ॉल्ट रूप से deque)। अभी भी मुख्य संचालन QStack
और std::stack
लिए समान हैं।
QVector उपयोग
QVector<T>
डायनामिक ऐरे टेम्प्लेट क्लास प्रदान करता है। यह QList<T>
तुलना में ज्यादातर मामलों में बेहतर प्रदर्शन प्रदान करता है, इसलिए इसे पहली पसंद होना चाहिए।
इसे विभिन्न तरीकों से आरंभ किया जा सकता है:
QVector<int> vect;
vect << 1 << 2 << 3;
QVector<int> v {1, 2, 3, 4};
नवीनतम में आरंभीकरण सूची शामिल है।
QVector<QString> stringsVector;
stringsVector.append("First");
stringsVector.append("Second");
आप इस तरह से वेक्टर का i-th तत्व प्राप्त कर सकते हैं:
v[i]
या at[i]
सुनिश्चित करें कि i
मान्य स्थिति है, यहां तक at(i)
चेक नहीं बनाता है, यह std::vector
से अंतर है।
QLinkedList उपयोग
Qt में आपको QLinkedList का उपयोग करना चाहिए, यदि आपको लिंक की गई सूची को लागू करने की आवश्यकता है।
यह QLinkedList
- O (1) में तत्वों को जोड़ने, प्रीपेंड करने, डालने के लिए तेज़ है, लेकिन QList
या QVector
- O (n) की तुलना में इंडेक्स लुकअप धीमा है। यह सामान्य है कि आप ध्यान में रखते हुए नोड्स के माध्यम से लिंक की गई सूची में कुछ ढूंढना है।
पूर्ण एल्गोरिथ्म संकलन तालिका यहां पाई जा सकती है ।
बस QLinkedList
में कुछ तत्वों को QLinkedList
आप ऑपरेटर <<()
उपयोग कर सकते हैं:
QLinkedList<QString> list;
list << "string1" << "string2" << "string3";
QLinkedList
के बीच में तत्वों को सम्मिलित करने के लिए या इसके सभी तत्वों में से कुछ को संशोधित करने के लिए आप जावा शैली या एसटीएल शैली के प्रयोग कर सकते हैं। यहाँ एक सरल उदाहरण है कि कैसे हम QLinkedList
सभी तत्वों को 2 से गुणा करते हैं:
QLinkedList<int> integerList {1, 2, 3};
QLinkedList<int>::iterator it;
for (it = integerList.begin(); it != integerList.end(); ++it)
{
*it *= 2;
}
QList
QList
वर्ग एक टेम्पलेट वर्ग है जो सूची प्रदान करता है। यह एक सूची में आइटम संग्रहीत करता है जो तेजी से सूचकांक-आधारित पहुंच और सूचकांक-आधारित सम्मिलन और निष्कासन प्रदान करता है।
सूची में आइटम सम्मिलित करने के लिए, आप operator<<()
, insert()
, append()
या prepend()
उपयोग कर सकते हैं। उदाहरण के लिए:
operator<<()
QList<QString> list;
list << "one" << "two" << "three";
insert()
QList<QString> list;
list << "alpha" << "beta" << "delta";
list.insert(2, "gamma");
append()
QList<QString> list;
list.append("one");
list.append("two");
list.append("three");
prepend()
QList<QString> list;
list.prepend("one");
list.prepend("two");
list.prepend("three");
एक विशेष सूचकांक स्थिति में आइटम तक पहुंच के लिए, आप उपयोग कर सकते हैं operator[]()
या at()
। at()
operator[]()
तुलना में तेज हो सकता है operator[]()
, यह कंटेनर की गहरी प्रतिलिपि का कारण नहीं बनता है और इसे निरंतर समय में काम करना चाहिए। उनमें से कोई भी तर्क-जाँच नहीं करता है। उदाहरण:
if (list[0] == "mystring")
cout << "mystring found" << endl;
या
if (list.at(i) == "mystring")
cout << "mystring found at position " << i << endl;
आइटम्स को हटाने के लिए, removeAt()
, takeAt()
, takeFirst()
, takeLast()
, removeFirst()
, removeLast()
, या removeOne()
। उदाहरण:
takeFirst()
// takeFirst() removes the first item in the list and returns it
QList<QWidget *> list;
...
while (!list.isEmpty())
delete list.takeFirst();
removeOne()
// removeOne() removes the first occurrence of value in the list
QList<QString> list;
list << "sun" << "cloud" << "sun" << "rain";
list.removeOne("sun");
किसी सूची में किसी विशेष मूल्य की सभी घटनाओं को खोजने के लिए, आप indexOf()
या lastIndexOf()
उपयोग कर सकते हैं। उदाहरण:
indexOf()
int i = list.indexOf("mystring");
if (i != -1)
cout << "First occurrence of mystring is at position " << i << endl;