تفاوت میان نسخه‌های «کتابخانه استاندارد قالب»

توضیحات بیشتر در مورد کانتینر ها
(توضیحات بیشتر در مورد کانتینر ها)
 
== اجزاء ==
 
=== [[الگوریتم|Algorithms]] ===
 
=== Containers ===
STL شامل کانتینر های ترتیبی (sequence containers) و وابسته (associative containers) می شود. کانتینرها اشیایی هستند که داده ها را ذخیره می کنند.
 
کانتینر های ترتیبی (sequence containers) شامل موارد زیر می شوند :
 
# vector
# deque
# list
 
و کانتینر های وابسته (associative containers) شامل موارد زیر می شوند :
 
# set
# multiset
# map
# multimap
# hash_set
# hash_map
# hash_multiset
# hash_multimap
 
 
همچنین کانتینر های ، prior_queue و stack وجود دارند که کانتینرهایی با interface های خاص هستند و از کانتینر های دیگر به عنوان پیاده سازی استفاده می کنند.
 
{| class="wikitable"
!کانتینر ها
!توضیحات
|-
! colspan="2" |کانتینر های ساده
|-
!pair
|این نوع کانتینر یک کانتینر وابسته ساده است که از 2 عنصر داده یا اشیا، تشکیل شده است و در مرتب سازی به ترتیب "اول" و "دوم" نامیده می شود.
|-
! colspan="2" |متوالی (آرایه ها/لیست های پیوندی)
|-
!vector
|یک آرایه پویا ، مانند آرایه C (یعنی امکان دسترسی تصادفی) با قابلیت تغییر اندازه خودکار هنگام قرار دادن یا پاک کردن یک شی. قرار دادن یک عنصر در انتهای vector انتها زمان ثابتی را در بر می گیرد. حذف آخرین عنصر فقط به زمان ثابت نیاز دارد ، زیرا تغییر سایز اتفاق نمی افتد. قرار دادن و پاک کردن در ابتدا یا وسط به صورت خطی است.
یک نوع ویژه برای نوع bool وجود دارد که با ذخیره مقادیر آن به صورت بیت ، فضای را بهینه می کند.
|-
!list
|یک لیست پیوندی دوگانه که عناصر را در به صورت پشت سرهم ذخیره نمی کند. که آن را با vector ها متمایز می کند.در list ها جستجوی و دسترسی به صورت آهسته (زمان خطی) خواهد بود ، اما هنگامی که موقعیتی پیدا شد ، درج و حذف سریع (زمان ثابت) است.
|-
!slist
|یک لیست پیوندی که عناصر را در به صورت پشت سرهم ذخیره نمی کند. که آن را با vector ها متمایز می کند.در list ها جستجوی و دسترسی به صورت آهسته (زمان خطی) خواهد بود ، اما هنگامی که موقعیتی پیدا شد ، درج و حذف سریع (زمان ثابت) است. کمی درج و حذف کارآمدتر است و از حافظه کمتری نسبت به لیست پیوندی دوگانه استفاده می کند ، اما فقط می تواند به سمت جلو حرکت کندو در کتابخانه استاندارد ++C به عنوان forward_list اجرا می شود.
|-
!deque '''( ''صف دو طرف بسته'')'''
|a vector with insertion/erase at the beginning or end in amortized constant time, however lacking some guarantees on iterator validity after altering the deque.
|-
! colspan="2" |Container adaptors
|-
!queue
|Provides FIFO queue interface in terms of <code>push</code>/<code>pop</code>/<code>front</code>/<code>back</code> operations.
Any sequence supporting operations <code>front()</code>, <code>back()</code>, <code>push_back()</code>, and <code>pop_front()</code> can be used to instantiate queue (e.g. <code>list</code> and <code>deque</code>).
|-
!priority queue
|Provides priority queue interface in terms of <code>push/pop/top</code> operations (the element with the highest priority is on top).
Any random-access sequence supporting operations <code>front()</code>, <code>push_back()</code>, and <code>pop_back()</code> can be used to instantiate priority_queue (e.g. <code>vector</code> and <code>deque</code>). It is implemented using a heap.
 
Elements should additionally support comparison (to determine which element has a higher priority and should be popped first).
|-
!stack
|Provides LIFO stack interface in terms of <code>push/pop/top</code> operations (the last-inserted element is on top).
Any sequence supporting operations <code>back()</code>, <code>push_back()</code>, and <code>pop_back()</code> can be used to instantiate stack (e.g. <code>vector</code>, <code>list</code>, and <code>deque</code>).
|-
! colspan="2" |Associative containers: unordered collections
|-
!set
|a mathematical set; inserting/erasing elements in a set does not invalidate iterators pointing in the set. Provides set operations union, intersection, difference, symmetric difference and test of inclusion. Type of data must implement comparison operator <code><</code> or custom comparator function must be specified; such comparison operator or comparator function must guarantee strict weak ordering, otherwise behavior is undefined. Typically implemented using a self-balancing binary search tree.
|-
!multiset
|same as a set, but allows duplicate elements (mathematical multiset).
|-
!map
|an associative array; allows mapping from one data item (a key) to another (a value). Type of key must implement comparison operator <code><</code> or custom comparator function must be specified; such comparison operator or comparator function must guarantee strict weak ordering, otherwise behavior is undefined. Typically implemented using a self-balancing binary search tree.
|-
!multimap
|same as a map, but allows duplicate keys.
|-
!hash_set
hash_multiset
hash_map
hash_multimap
|similar to a set, multiset, map, or multimap, respectively, but implemented using a hash table; keys are not ordered, but a hash function must exist for the key type. These types were left out of the C++ standard; similar containers were standardized in C++11, but with different names (<code>unordered_set</code> and <code>unordered_map</code>).
|-
! colspan="2" |Other types of containers
|-
!bitset
|stores series of bits similar to a fixed-sized vector of bools. Implements bitwise operations and lacks iterators. Not a sequence. Provides random access.
|-
!valarray
|Another array data type, intended for numerical use (especially to represent vectors and matrices); the C++ standard allows specific optimizations for this intended purpose. According to Josuttis, valarray was badly designed, by people "who left the [C++ standard] committee a long time before the standard was finished", and expression template libraries are to be preferred. A proposed rewrite of the valarray part of the standard in this vein was rejected, instead becoming a permission to implement it using expression template.
|}
 
=== Functions ===
 
=== Iterators ===
 
=== [[الگوریتم|Algorithms]] ===
 
=== Functions ===
شمول شدن کتابخانه [[الگوریتم (سی++)|الگوریتم]] توابعی را به همراه دارد که در ترتیب دهی و جستجو در آرایه‌ها بسیار مفید است.<ref name=":0"/>الگوریتم‌ها در ظروف نقش بسیار مفیدی دارند.<ref name=":1">{{یادکرد وب|عنوان=Containers - C++ Reference|نشانی=http://www.cplusplus.com/reference/stl/|وبگاه=www.cplusplus.com|بازبینی=2020-08-03}}</ref>
 
۶

ویرایش