ال خريطة غير مرتبة عبارة عن حاوية مرتبطة تحتوي على العناصر التي تم إنشاؤها عن طريق دمج قيمة معينة مع قيمة مفتاح. يتم تحديد العنصر على وجه التحديد من خلاله القيمة الرئيسية ، و ال القيمة المعينة هو المحتوى المتعلق بالمفتاح. قد تكون المفاتيح والقيم من أي نوع ثابت أو نوع محدد من قبل المستخدم . يمكن اعتبار الخريطة غير المرتبة بمثابة بنية بيانات من نوع القاموس الذي يخزن العناصر داخل نفسه. الأزواج المتسلسلة التي يحملها (المفتاح، القيمة) تمكين الاسترجاع السريع لعنصر معين باستخدام مفتاحه الفردي.
المفتاح المقدم للخريطة هو مجزأة في مؤشرات جدول التجزئة، وهذا هو السبب في أن سرعة بنية البيانات تعتمد بشكل كبير على وظيفة التجزئة، ولكن في المتوسط، تكلفة البحث والإدراج والحذف من جدول التجزئة هو o(1).
سلسلة في كثافة العمليات
في أسوأ الحالات، خاصة بالنسبة للأعداد الصحيحة الأولية الكبيرة، يكون الأمر كذلك تعقيد الوقت يمكن أن تتراوح من س(1) ل على) . يوصى بشدة باستخدام الخريطة في هذه الحالة لتجنب تلقي أي رسالة (تم تجاوز الحد الزمني) مشكلة.
بناء الجملة:
Unordered_mapumap
مثال:
//A c++ program to check an unordered map in it. #include #include using namespace std; int main() { unordered_mapumap; umap['javatpoint'] = 20; umap['regular'] = 30; umap['distribute'] = 40; for (auto y :umap) cout<<y.first<< ' << y.second<<endl; } < pre> <p> <strong>Output</strong> </p> <pre> Distribute 40 Regular 30 Javatpoint 20 </pre> <p> <strong>Explanation:</strong> </p> <p>This output specifically justifies the fact that the <strong> <em>unordered map's</em> </strong> output value is generated in a random <strong> <em>key-to-value</em> </strong> manner while the map shows value and key in an ordered fashion.</p> <h2>Unordered set vs Unordered map</h2> <p>Some differences between Unordered set and Unordered map are as follows:</p> <h3>Unordered map</h3> <ul> <li>Only <strong> <em>(key-value)</em> </strong> pairs are found in the elements of an <strong> <em>unordered map</em> </strong> .</li> <li>Use the operator <strong>'[]'</strong> to extract a key's corresponding value from a map.</li> </ul> <h3>Unordered set</h3> <ul> <tr><td> <em>Key-value</em> </td> pairs are mostly utilised to determine whether a set is present or absent and are not always present in an unordered set. <li>Using the <strong> <em>find() function</em> </strong> , an element is searched for. Thus, there is no need for an operator.</li> </tr></ul> <p> <strong>Important point:</strong> </p> <p>For instance, take the issue of counting the frequency of individual words. Since, counts cannot be stored in <strong> <em>unordered set (or set),</em> </strong> we must instead use unordered map.</p> <h2>Map vs. Unordered map</h2> <p>Some differences between the Map and Unordered map are as follows:</p> <h3>Unordered map</h3> <ul> <li>Any order may be used to store the unordered map key.</li> <li>The implementation of unordered map results in an uneven tree structure, making it impossible to retain the order of the entries.</li> <li>Operations on an unordered map typically have an <strong> <em>o(1) time complexity</em> </strong> .</li> </ul> <h3>Map</h3> <ul> <li>The map is an ordered list of distinct keys.</li> <li>It is possible to preserve the elements' order (by specific tree traversal) because map uses a balanced tree structure.</li> <li>The map operations have an <strong> <em>o time complexity (log n)</em> </strong> .</li> </ul> <h2>Procedures for unordered map</h2> <p>There are numerous functions that can be used with unordered map. The ones who are most helpful are:</p> <ul> <li>Operator =</li> <li>Operator[]</li> <li>Beginning and ending of the iterator</li> <li>Empty</li> <li>Size of the capacity</li> <li>For a lookup, locate and count.</li> <li>Insert and delete</li> </ul> <p>The full list of an unordered map's methods is shown below:</p> <p> <strong>At():</strong> </p> <p>This c++ unordered map method <strong> <em>returns</em> </strong> a reference to the value with the specified element as the <strong> <em>key k</em> </strong> .</p> <p> <strong>Begin():</strong> </p> <p>It provides a return value that is an <strong> <em>iterator pointing</em> </strong> to the first entry in the unordered map container.</p> <p> <strong>End():</strong> </p> <p>The unordered map container bucket returns an <strong> <em>iterator pointing</em> </strong> to the location after the final element ().</p> <p> <strong>Bucket():</strong> </p> <p>It returns the bucket number in the map's bucket count where the element with <strong> <em>key k</em> </strong> is placed.</p> <p> <strong>Bucket_count()</strong> </p> <p>The unordered map's total number of buckets is <strong> <em>tallied</em> </strong> using the bucket count function. It can be called without passing any parameters.</p> <p> <strong>Bucket size</strong> </p> <p>It gives the unordered map count's element count for each <strong> <em>bucket ()</em> .</strong> </p> <p> <strong>Count()</strong> </p> <p>It gives the unordered map count's element count for each <strong> <em>bucket ()</em> </strong> the number of elements in an unordered map with the specified key equal range should be counted.</p> <p> <strong>Equal_eange()</strong> </p> <p>It returns the boundaries of a range with all the container's items and a key that compares to <strong> <em>k</em> </strong> .</p> <p> <strong>Find()</strong> </p> <p>Gives an iterator to the element's empty.</p> <p> <strong>Position ()</strong> </p> <p>It determines whether the unordered map container's container is empty.</p> <p> <strong>Erase()</strong> </p> <p>Elements in the unordered map container can be deleted using the <strong> <em>erase()</em> </strong> function.</p> <p>Although the functions to view the internal bucket size, bucket count, used hash function, and various hash policies are also provided by the <strong> <em>c++11 library</em> </strong> , they are less helpful in practical applications. Using iterator, we may loop through every element in the unordered map.</p> <h3>Example:</h3> <pre> #include #include using namespace std; int main() { // when we will declare a umap it must be of type and here the key will be of string type and the mapped value of double in nature unordered_mapumap = { //in this we will insert the element in map directly {'one', 1}, {'two', 2}, {'three', 3} }; // here wi will insert the values by the help of the [] operator umap['the value of pi'] = 3.14; umap['the value of root2'] = 1.414; umap['the value ofroot3'] = 1.732; umap['the value oflog10'] = 2.302; umap['the value ofloge'] = 1.0; // inserting value by insert function umap.insert(make_pair('e', 2.718)); string key = 'the value of pi'; // if key not found in map iterator // to end is returned if (umap.find(key) == umap.end()) cout<< key <<' cannot retrieved '; if key found then iterator to that is returned else cout<< 'retrieved '<< << ' '; ; (umap.find(key)="=" umap.end()) <<' retrieved '; 'found <<endl; now we will iterate over all value of umap unordered_map::iterator itr; ' the entire elements : '; for (itr="umap.begin();" itr !="umap.end();" itr++) { cout<first ' <second } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Retrieved the value of pi Lambda value cannot retrieved The entire elements : E 2.718 The value ofloge 1 The value oflog10 2.302 The value of root2 1.414 The value ofroot3 1.732 The value of pi 3.14 Two 2 Three 3 One 1 </pre> <h3>Example:</h3> <pre> // It is a c++ program to find rhefreqency of it ,in this we will use of unordered_map of every word #include using namespace std; void printfrequencies(const string &str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss>> word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout<< '(' <first << ', ' <second ') '; } int main() { string str="java t points questions " 'learn programs'; printfrequencies(str); return 0; < pre> <p> <strong>Output</strong> </p> <pre> (programs, 1) (learn, 1) (questions, 1) (t, 1) (points, 1) (java, 1) </pre> <hr></first></pre></'></pre></y.first<<>
توضيح:
يبرر هذا الإخراج على وجه التحديد حقيقة أن خرائط غير مرتبة يتم إنشاء قيمة الإخراج بشكل عشوائي مفتاح إلى قيمة بطريقة بينما تظهر الخريطة القيمة والمفتاح بطريقة مرتبة.
مجموعة غير مرتبة مقابل خريطة غير مرتبة
بعض الاختلافات بين المجموعة غير المرتبة والخريطة غير المرتبة هي كما يلي:
خريطة غير مرتبة
- فقط (قيمة المفتاح) تم العثور على أزواج في عناصر خريطة غير مرتبة .
- استخدم المشغل '[]' لاستخراج القيمة المقابلة للمفتاح من الخريطة.
مجموعة غير مرتبة
- باستخدام وظيفة البحث (). ، يتم البحث عن عنصر. وبالتالي، ليست هناك حاجة للمشغل.
نقطة مهمة:
على سبيل المثال، لنأخذ مسألة حساب تكرار الكلمات الفردية. لأنه لا يمكن تخزين الأعداد في مجموعة غير مرتبة (أو مجموعة)، يجب علينا بدلاً من ذلك استخدام خريطة غير مرتبة.
الخريطة مقابل الخريطة غير المرتبة
بعض الاختلافات بين الخريطة والخريطة غير المرتبة هي كما يلي:
خريطة غير مرتبة
- يمكن استخدام أي أمر لتخزين مفتاح الخريطة غير المرتب.
- يؤدي تنفيذ خريطة غير مرتبة إلى بنية شجرة غير متساوية، مما يجعل من المستحيل الاحتفاظ بترتيب الإدخالات.
- عادةً ما تحتوي العمليات على خريطة غير مرتبة على س (1) التعقيد الزمني .
خريطة
- الخريطة عبارة عن قائمة مرتبة من المفاتيح المميزة.
- من الممكن الحفاظ على ترتيب العناصر (من خلال اجتياز شجرة محددة) لأن الخريطة تستخدم بنية شجرة متوازنة.
- عمليات الخريطة لها o التعقيد الزمني (log n) .
إجراءات الخريطة غير المرتبة
هناك العديد من الوظائف التي يمكن استخدامها مع خريطة غير مرتبة. والذين هم الأكثر فائدة هم:
- المشغل =
- المشغل أو العامل[]
- بداية ونهاية المكرر
- فارغ
- حجم السعة
- للبحث، تحديد موقع والعد.
- إدراج وحذف
القائمة الكاملة لطرق الخريطة غير المرتبة موضحة أدناه:
في():
طريقة الخريطة غير المرتبة هذه هي C++ عائدات إشارة إلى القيمة مع العنصر المحدد باسم مفتاح ك .
يبدأ():
يوفر قيمة إرجاع وهي مشيرا التكرار إلى الإدخال الأول في حاوية الخريطة غير المرتبة.
تحويل int إلى سلسلة في Java
نهاية():
يُرجع دلو حاوية الخريطة غير المرتبة ملفًا مشيرا التكرار إلى الموقع بعد العنصر الأخير ().
دلو():
تقوم بإرجاع رقم المجموعة في عدد مجموعات الخريطة حيث يوجد العنصر مفتاح ك وضعت.
دلو_العدد()
إجمالي عدد مجموعات البيانات غير المرتبة هو تم حسابه باستخدام وظيفة عدد الجرافات. يمكن استدعاؤه دون تمرير أي معلمات.
حجم الدلو
إنه يعطي عدد عناصر عدد الخريطة غير المرتبة لكل منها دلو () .
إذا كان البيان جافا
عدد()
إنه يعطي عدد عناصر عدد الخريطة غير المرتبة لكل منها دلو () يجب حساب عدد العناصر في الخريطة غير المرتبة ذات النطاق المتساوي للمفتاح المحدد.
يساوي_النطاق()
تقوم بإرجاع حدود النطاق الذي يحتوي على جميع عناصر الحاوية والمفتاح الذي يقارن به ك .
يجد()
يعطي مكررًا للعنصر الفارغ.
موضع ()
العثور على اي فون الروبوت الخاص بي
يحدد ما إذا كانت حاوية حاوية الخريطة غير المرتبة فارغة أم لا.
مسح ()
يمكن حذف العناصر الموجودة في حاوية الخريطة غير المرتبة باستخدام مسح () وظيفة.
على الرغم من أن وظائف عرض حجم المجموعة الداخلية وعدد المجموعات ووظيفة التجزئة المستخدمة وسياسات التجزئة المختلفة يتم توفيرها أيضًا بواسطة مكتبة سي++11 ، فهي أقل فائدة في التطبيقات العملية. باستخدام المكرِّر، يمكننا تكرار كل عنصر في الخريطة غير المرتبة.
مثال:
#include #include using namespace std; int main() { // when we will declare a umap it must be of type and here the key will be of string type and the mapped value of double in nature unordered_mapumap = { //in this we will insert the element in map directly {'one', 1}, {'two', 2}, {'three', 3} }; // here wi will insert the values by the help of the [] operator umap['the value of pi'] = 3.14; umap['the value of root2'] = 1.414; umap['the value ofroot3'] = 1.732; umap['the value oflog10'] = 2.302; umap['the value ofloge'] = 1.0; // inserting value by insert function umap.insert(make_pair('e', 2.718)); string key = 'the value of pi'; // if key not found in map iterator // to end is returned if (umap.find(key) == umap.end()) cout<< key <<\' cannot retrieved \'; if key found then iterator to that is returned else cout<< \'retrieved \'<< << \' \'; ; (umap.find(key)="=" umap.end()) <<\' retrieved \'; \'found <<endl; now we will iterate over all value of umap unordered_map::iterator itr; \' the entire elements : \'; for (itr="umap.begin();" itr !="umap.end();" itr++) { cout<first \' <second } return 0; < pre> <p> <strong>Output</strong> </p> <pre> Retrieved the value of pi Lambda value cannot retrieved The entire elements : E 2.718 The value ofloge 1 The value oflog10 2.302 The value of root2 1.414 The value ofroot3 1.732 The value of pi 3.14 Two 2 Three 3 One 1 </pre> <h3>Example:</h3> <pre> // It is a c++ program to find rhefreqency of it ,in this we will use of unordered_map of every word #include using namespace std; void printfrequencies(const string &str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss>> word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout<< '(' <first << \', \' <second \') \'; } int main() { string str="java t points questions " \'learn programs\'; printfrequencies(str); return 0; < pre> <p> <strong>Output</strong> </p> <pre> (programs, 1) (learn, 1) (questions, 1) (t, 1) (points, 1) (java, 1) </pre> <hr></first></pre></\'>
مثال:
// It is a c++ program to find rhefreqency of it ,in this we will use of unordered_map of every word #include using namespace std; void printfrequencies(const string &str) { unordered_mapwordfreq; stringstream ss(str); string word; while (ss>> word) wordfreq[word]++; unordered_map:: iterator q; for (q = wordfreq.begin(); q != wordfreq.end(); q++) cout<< '(' <first << \', \' <second \') \'; } int main() { string str="java t points questions " \'learn programs\'; printfrequencies(str); return 0; < pre> <p> <strong>Output</strong> </p> <pre> (programs, 1) (learn, 1) (questions, 1) (t, 1) (points, 1) (java, 1) </pre> <hr></first>
\'>