کتابخانه‌ی استاندارد · عدد و مجموعه

مجموعه ها collections

ساختمان‌های داده: وکتور و نگاشت، پشته، صف، صف دوسر، مجموعه، لیست پیوندی، صف اولویت‌دار و شمارنده.

واردسازی مجموعه ها
در این صفحه
  1. گونه‌ها
  2. روال‌ها

وکتور و نگاشت که در هر برنامه‌ای به کار می‌روند، در همین بسته تعریف شده‌اند، اما برای استفاده از آن‌ها لازم نیست بسته را وارد کنید. بقیه‌ی ساختمان‌ها، مثل پشته و صف، با واردسازی مجموعه ها در دسترس‌اند.

همه‌ی این ساختمان‌ها عام هستند: گونه‌ی عضوها را با <...> تعیین می‌کنید، مثل مجموعه ها.پشته<رشته>. همه حافظه می‌گیرند؛ درست پس از ساختن، دیرکن ... .آزادسازی() بنویسید.

روش‌های وکتور و نگاشت دو نام فارسی دارند: نام کوتاهی که در درس‌ها می‌بینید (بیفزا، بگیر، آزادکن) و نامی که این بسته تعریف کرده (افزودن، دریافت، آزادسازی). هر دو کار می‌کنند؛ هر کدام را که خواناتر می‌دانید به کار ببرید، فقط در یک برنامه یک‌دست بنویسید.

کدام را انتخاب کنم؟ برای فهرست معمولی وکتور؛ برای «آخرین آمده، اولین رفته» پشته؛ برای «اولین آمده، اولین رفته» صف؛ برای افزودن و برداشتن از هر دو سر صف دوسر؛ برای جستجوی سریع با کلید نگاشت؛ برای حذف تکراری‌ها مجموعه؛ و برای «همیشه کوچک‌ترین را بده» صف اولویت دار.

گونه‌ها

لیست پیوندی LinkedList

ساختار لیست پیوندی<T>
لیست پیوندی دوطرفه؛ افزودن و برداشتن از دو سر سریع است.
نامانگلیسیگونهتوضیح
valsvalsبردارمقدار گره‌ها.
nxtnxtبردار<صحیح>شماره‌ی گره بعدی هر گره.
prvprvبردار<صحیح>شماره‌ی گره قبلی هر گره.
headheadصحیحشماره‌ی نخستین گره.
tailtailصحیحشماره‌ی آخرین گره.
freedfreedصحیحشماره‌ی نخستین گره آزادشده که برای استفاده‌ی دوباره نگه داشته شده.
countcountصحیح = 0تعداد عضوها.
collections-LinkedList.salam
واردسازی مجموعه ها

روال ریشه:
    ناپایا ل := مجموعه ها.لیست پیوندی {} برگردان مجموعه ها.لیست پیوندی<رشته>
    دیرکن ل.آزادسازی()
    ل.افزودن به انتها("ب")
    ل.افزودن به انتها("پ")
    ل.افزودن به ابتدا("الف")
    سرچاپ ل.تبدیل به بردار()، ل.اندازه()
    سرچاپ ل.مقدار ابتدا()، ل.مقدار انتها()، ل.دریافت(۱)
    سرچاپ ل.برداشتن از ابتدا()، ل.برداشتن از انتها()، ل.اندازه()، ل.خالی است()
پایان
خروجی["الف", "ب", "پ"] 3 الف پ ب الف پ 1 false

افزودن به انتها push_back

روال افزودن به انتها(v: T)
عضوی به انتها اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam

افزودن به ابتدا push_front

روال افزودن به ابتدا(v: T)
عضوی به ابتدا اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam

برداشتن از ابتدا pop_front

روال برداشتن از ابتدا(): T
عضو ابتدا را برمی‌دارد و برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam

برداشتن از انتها pop_back

روال برداشتن از انتها(): T
عضو انتها را برمی‌دارد و برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam

مقدار ابتدا front_val

روال مقدار ابتدا(): T
عضو ابتدا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam

مقدار انتها back_val

روال مقدار انتها(): T
عضو انتها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam

اندازه size

روال اندازه(): صحیح
تعداد عضوها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam

خالی است is_empty

روال خالی است(): منطقی
اگر خالی باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam

دریافت get

روال دریافت(i: صحیح): T
عضو شماره‌ی i از ابتدا؛ برای رسیدن به آن باید از ابتدا جلو رفت، پس برای دسترسی مکرر با شماره، وکتور بهتر است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam

تبدیل به بردار to_vector

روال تبدیل به بردار(): بردار<T>
عضوها را به ترتیب در یک وکتور تازه برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam

آزادسازی free

روال آزادسازی()
حافظه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-LinkedList.salam

شمارنده Counter

ساختار شمارنده<K>
شمارنده: می‌شمارد هر چیز چند بار دیده شده؛ مثلاً تکرار واژه‌ها در یک متن.
نامانگلیسیگونهتوضیح
mmنگاشت درهمنگاشت از هر چیز به تعدادش.
collections-Counter.salam
واردسازی مجموعه ها
واردسازی رشته

روال ریشه:
    ناپایا ش := مجموعه ها.شمارنده {} برگردان مجموعه ها.شمارنده<رشته>
    دیرکن ش.آزادسازی()
    هر و۱ در رشته.واژه ها("به نام خدا به نام دوست"):
        ش.افزودن(و۱)
    پایان
    ش.افزودن چندتایی("دوست"، ۲)
    سرچاپ ش.شمارش("نام")، ش.شمارش("دوست")، ش.شمارش("نیست")، ش.متمایز()
پایان
خروجی2 3 0 4

افزودن add

روال افزودن(k: K)
یک بار به شمار k اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Counter.salam

افزودن چندتایی add_n

روال افزودن چندتایی(k: K، n: صحیح)
n بار به شمار k اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Counter.salam

شمارش count

روال شمارش(k: K): صحیح
چند بار k دیده شده؛ اگر هیچ‌وقت، صفر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Counter.salam

متمایز distinct

روال متمایز(): صحیح
تعداد چیزهای متفاوتی که شمرده شده‌اند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Counter.salam

آزادسازی free

روال آزادسازی()
حافظه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Counter.salam

صف اولویت دار PriorityQueue

ساختار صف اولویت دار<T>
صف اولویت‌دار: هر بار کوچک‌ترین عضو بیرون می‌آید، به هر ترتیبی که آمده باشند؛ برای زمان‌بندی کارها و الگوریتم‌های کوتاه‌ترین مسیر.
نامانگلیسیگونهتوضیح
hhبردارعضوها به شکل هرم دودویی.
collections-PriorityQueue.salam
واردسازی مجموعه ها

روال ریشه:
    ناپایا ص := مجموعه ها.صف اولویت دار {} برگردان مجموعه ها.صف اولویت دار<صحیح>
    دیرکن ص.آزادسازی()
    هر ع در [۵، ۱، ۴، ۲، ۳]:
        ص.افزودن(ع)
    پایان
    سرچاپ ص.مشاهده()، ص.اندازه()
    تا وارونه ص.خالی است():
        چاپ ص.برداشتن()، ""
    پایان
    سرچاپ ""
پایان
خروجی1 5 1 2 3 4 5

افزودن push

روال افزودن(x: T)
عضوی اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam

مشاهده peek

روال مشاهده(): T
کوچک‌ترین عضو را بدون برداشتن نشان می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam

اندازه size

روال اندازه(): صحیح
تعداد عضوها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam

خالی است is_empty

روال خالی است(): منطقی
اگر خالی باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam

برداشتن pop

روال برداشتن(): T
کوچک‌ترین عضو را برمی‌دارد و برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam

آزادسازی free

روال آزادسازی()
حافظه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-PriorityQueue.salam

مجموعه Set

ساختار مجموعه<T>
مجموعه: هر عضو فقط یک بار. برای حذف تکراری‌ها و پرسیدن سریع «این هست یا نه؟».
نامانگلیسیگونهتوضیح
mmنگاشت درهمنگاشتی که عضوها را به‌عنوان کلید نگه می‌دارد.
collections-Set.salam
واردسازی مجموعه ها

روال ریشه:
    ناپایا م := مجموعه ها.مجموعه {} برگردان مجموعه ها.مجموعه<رشته>
    دیرکن م.آزادسازی()
    هر ب در ["سلام"، "دنیا"، "سلام"]:
        م.افزودن(ب)
    پایان
    سرچاپ م.اندازه()، م.دارد("سلام")، م.دارد("خداحافظ")
    سرچاپ م.حذف("دنیا")، م.اندازه()، م.خالی است()
پایان
خروجی2 true false true 1 false

افزودن add

روال افزودن(x: T)
عضوی اضافه می‌کند؛ اگر از قبل باشد، کاری نمی‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam

دارد has

روال دارد(x: T): منطقی
اگر عضو در مجموعه باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam

حذف remove

روال حذف(x: T): منطقی
عضو را حذف می‌کند؛ اگر نبود، نادرست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam

اندازه size

روال اندازه(): صحیح
تعداد عضوها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam

خالی است is_empty

روال خالی است(): منطقی
اگر خالی باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam

آزادسازی free

روال آزادسازی()
حافظه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Set.salam

نگاشت مرتب OrderedMap

ساختار نگاشت مرتب
نگاشت رشته به رشته که ترتیب درج را نگه می‌دارد؛ برای سرآیندها، تنظیمات و هر جا که ترتیب نمایش مهم است.
نامانگلیسیگونهتوضیح
keyskeysبردار<رشته>کلیدها به ترتیب درج.
valsvalsبردار<رشته>مقدارها به همان ترتیب.
idxidxنگاشت درهم<رشته، صحیح>نگاشت از کلید به شماره‌اش، برای جستجوی سریع.
collections-OrderedMap.salam
واردسازی مجموعه ها

روال ریشه:
    ناپایا ن := مجموعه ها.نگاشت مرتب {}
    دیرکن ن.آزادسازی()
    ن.تنظیم("نام"، "سلام")
    ن.تنظیم("نسخه"، "۰.۴.۸")
    ن.تنظیم("زبان"، "فارسی")
    سرچاپ ن.طول()، ن.دارد("نسخه")، ن.دریافت("نام")، ن.دریافت با پیش فرض("مجوز"، "-")
    سرچاپ ن.نمایه کلید("زبان")، ن.کلید در(۰)، ن.مقدار در(۰)
    ن.تنظیم در(۰، "Salam")
    سرچاپ ن.حذف("نسخه")، ن.طول()
    کلیدها := ن.رونوشت کلیدها()
    سرچاپ کلیدها
پایان
خروجی3 true سلام - 2 نام سلام 1 2 ["نام", "زبان"]

نمایه کلید index_of

روال نمایه کلید(k: رشته): صحیح
شماره‌ی کلید را برمی‌گرداند، یا منفی یک.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

طول len

روال طول(): صحیح
تعداد کلیدها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

دارد has

روال دارد(k: رشته): منطقی
اگر کلید باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

دریافت get

روال دریافت(k: رشته): رشته
مقدار کلید؛ اگر نباشد، رشته‌ی تهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

دریافت با پیش فرض get_or

روال دریافت با پیش فرض(k: رشته، def: رشته): رشته
مقدار کلید، یا مقدار پیش‌فرض.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

تنظیم set

روال تنظیم(k: رشته، v: رشته): صحیح
مقدار کلید را می‌گذارد؛ کلید تازه به انتها اضافه می‌شود و کلید موجود جایش را نگه می‌دارد. شماره‌ی کلید را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

کلید در key_at

روال کلید در(i: صحیح): رشته
کلید شماره‌ی i.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

مقدار در val_at

روال مقدار در(i: صحیح): رشته
مقدار شماره‌ی i.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

تنظیم در set_at

روال تنظیم در(i: صحیح، v: رشته)
مقدار شماره‌ی i را جایگزین می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

حذف remove

روال حذف(k: رشته): صحیح
کلید را حذف می‌کند و شماره‌ای را که داشت برمی‌گرداند، یا منفی یک.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

رونوشت کلیدها clone_keys

روال رونوشت کلیدها(): بردار<رشته>
رونوشتی از کلیدها به ترتیب درج.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

آزادسازی free

روال آزادسازی()
حافظه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-OrderedMap.salam

صف دوسر Deque

ساختار صف دوسر<T>
صف دوسر: از هر دو سر می‌شود افزود و برداشت، و هر دو کار سریع است.
نامانگلیسیگونهتوضیح
frontfrontبردارعضوهای سمت ابتدا.
backbackبردارعضوهای سمت انتها.
collections-Deque.salam
واردسازی مجموعه ها

روال ریشه:
    ناپایا د := مجموعه ها.صف دوسر {} برگردان مجموعه ها.صف دوسر<صحیح>
    دیرکن د.آزادسازی()
    د.افزودن به انتها(۲)
    د.افزودن به انتها(۳)
    د.افزودن به ابتدا(۱)
    سرچاپ د.مقدار ابتدا()، د.مقدار انتها()، د.دریافت(۱)، د.اندازه()
    سرچاپ د.برداشتن از ابتدا()، د.برداشتن از انتها()، د.اندازه()، د.خالی است()
پایان
خروجی1 3 2 3 1 3 1 false

افزودن به ابتدا push_front

روال افزودن به ابتدا(x: T)
عضوی به ابتدا اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam

افزودن به انتها push_back

روال افزودن به انتها(x: T)
عضوی به انتها اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam

برداشتن از ابتدا pop_front

روال برداشتن از ابتدا(): T
عضو ابتدا را برمی‌دارد و برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam

برداشتن از انتها pop_back

روال برداشتن از انتها(): T
عضو انتها را برمی‌دارد و برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam

مقدار ابتدا front_val

روال مقدار ابتدا(): T
عضو ابتدا را بدون برداشتن نشان می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam

مقدار انتها back_val

روال مقدار انتها(): T
عضو انتها را بدون برداشتن نشان می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam

اندازه size

روال اندازه(): صحیح
تعداد عضوها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam

خالی است is_empty

روال خالی است(): منطقی
اگر خالی باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam

دریافت get

روال دریافت(i: صحیح): T
عضو شماره‌ی i از ابتدا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam

آزادسازی free

روال آزادسازی()
حافظه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Deque.salam

بردار Vector

ساختار بردار<T>
فهرستی با اندازه‌ی متغیر؛ پرکاربردترین ساختمان داده. عضوها پشت‌سرهم در حافظه‌اند و دسترسی با شماره فوری است. با [i] هم می‌توانید عضوها را بخوانید و بنویسید.
نامانگلیسیگونهتوضیح
datadataT*نشانی حافظه‌ی عضوها.
collections-Vector.salam
روال ریشه:
    ناپایا و۱ := وکتور {} برگردان وکتور<صحیح>
    دیرکن و۱.آزادسازی()
    و۱.رزرو(۸)
    سرچاپ و۱.طول()، و۱.ظرفیت() >= ۸، و۱.خالی است()
    و۱.افزودن(۱۰)
    و۱.افزودن(۲۰)
    و۱.افزودن(۳۰)
    سرچاپ و۱، و۱.اول()، و۱.آخر()، و۱.دریافت(۱)، و۱[۲]
    و۱.تنظیم(۰، ۱۱)
    و۱[۱] = ۲۲
    و۱.درج(۱، ۱۵)
    سرچاپ و۱
    سرچاپ و۱.حذف در(۱)، و۱.برداشتن()، و۱
    ا := و۱.ارجاع(۰)
    ا[۰] = ۹۹
    سرچاپ و۱
    و۱.تنظیم با تغییر اندازه(و۱.طول()، ۷)
    سرچاپ و۱
    و۱.پاک‌سازی()
    سرچاپ و۱.طول()
    ناپایا ص := وکتور {} برگردان وکتور<صحیح>
    دیرکن ص.آزادسازی()
    ص.صفرها(۳)
    سرچاپ ص
    ناپایا خ := وکتور {} برگردان وکتور<صحیح>
    دیرکن خ.آزادسازی()
    خ.تخصیص(۴)
    سرچاپ خ.طول()
پایان
خروجی0 true true [10, 20, 30] 10 30 20 30 [11, 15, 22, 30] 15 30 [11, 22] [99, 22] [99, 22, 7] 0 [0, 0, 0] 4

رزرو reserve

روال رزرو(need: صحیح)
از پیش جا برای دست‌کم need عضو می‌گیرد تا افزودن‌های بعدی حافظه را دوباره جابه‌جا نکنند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

افزودن push

روال افزودن(x: T)
یک عضو به انتها اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

برداشتن pop

روال برداشتن(): T
آخرین عضو را برمی‌دارد و برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

دریافت get

روال دریافت(i: صحیح): T
عضو شماره‌ی i را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

ارجاع ref

روال ارجاع(i: صحیح): T*
نشانی عضو شماره‌ی i را برمی‌گرداند تا بتوانید خودش را تغییر دهید، بدون رونوشت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

تنظیم set

روال تنظیم(i: صحیح، x: T)
عضو شماره‌ی i را جایگزین می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

تنظیم با تغییر اندازه resize_set

روال تنظیم با تغییر اندازه(i: صحیح، x: T)
مثل تنظیم، ولی اگر i از طول بیشتر باشد، وکتور را بزرگ می‌کند. خانه‌های بین طول قبلی و i مقدار مشخصی ندارند؛ پس یا به‌ترتیب پر کنید، یا اول با صفرها بسازید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

صفرها zeros

روال صفرها(n: صحیح)
n عضو صفر به وکتور می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

تخصیص alloc

روال تخصیص(n: صحیح)
طول وکتور را n می‌کند، بدون مقداردهی؛ عضوها را پیش از خواندن پر کنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

طول len

روال طول(): صحیح
تعداد عضوها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

ظرفیت cap

روال ظرفیت(): صحیح
ظرفیت فعلی؛ چند عضو دیگر بدون گرفتن حافظه‌ی تازه جا می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

خالی است is_empty

روال خالی است(): منطقی
اگر وکتور عضوی نداشته باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

اول first

روال اول(): T
نخستین عضو.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

آخر last

روال آخر(): T
آخرین عضو.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

پاک‌سازی clear

روال پاک‌سازی()
همه‌ی عضوها را حذف می‌کند ولی حافظه را نگه می‌دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

درج insert

روال درج(i: صحیح، x: T)
عضو را در جای i درج می‌کند و بقیه را یک خانه جلو می‌برد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

حذف در remove_at

روال حذف در(i: صحیح): T
عضو جای i را حذف و برمی‌گرداند و بقیه را یک خانه عقب می‌کشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

عملگر اندیس operator_index

روال عملگر اندیس(i: صحیح): T
همان خواندن با و۱[i].

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

تنظیم عملگر اندیس operator_index_set

روال تنظیم عملگر اندیس(i: صحیح، x: T)
همان نوشتن با و۱[i] = x.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

پیمایشگر iter

روال پیمایشگر(): پیمایشگر بردار<T>
یک پیمایشگر برای گذر دستی روی عضوها برمی‌گرداند. بیشتر وقت‌ها هر ... در ساده‌تر است.
collections-VectorIter.salam
روال ریشه:
    ناپایا و۱ := وکتور {} برگردان وکتور<رشته>
    دیرکن و۱.آزادسازی()
    و۱.افزودن("بهار")
    و۱.افزودن("تابستان")
    ناپایا پ := و۱.پیمایشگر()
    تا پ.بعدی دارد():
        سرچاپ پ.مقدار()
        پ.بعدی()
    پایان
پایان
خروجیبهار تابستان

آزادسازی free

روال آزادسازی()
حافظه‌ی وکتور را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Vector.salam

پیمایشگر بردار VectorIter

ساختار پیمایشگر بردار<T>
پیمایشگر وکتور؛ با بعدی دارد، مقدار و بعدی عضو به عضو جلو می‌روید.
نامانگلیسیگونهتوضیح
datadataT*نشانی عضوهای وکتور.
lenlenصحیح = 0تعداد عضوها.
posposصحیح = 0جای فعلی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-VectorIter.salam

بعدی دارد has_next

روال بعدی دارد(): منطقی
اگر عضو دیگری مانده باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-VectorIter.salam

مقدار value

روال مقدار(): T
عضو فعلی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-VectorIter.salam

بعدی next

روال بعدی()
به عضو بعدی می‌رود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-VectorIter.salam

صف Queue

ساختار صف<T>
صف: اولین عضوی که آمده، اولین عضوی است که بیرون می‌رود؛ مثل صف نانوایی.
نامانگلیسیگونهتوضیح
inboxinboxبردارعضوهای تازه‌وارد.
outboxoutboxبردارعضوهای آماده‌ی خروج؛ هر وقت خالی شود، از inbox پر می‌شود.
collections-Queue.salam
واردسازی مجموعه ها

روال ریشه:
    ناپایا ص := مجموعه ها.صف {} برگردان مجموعه ها.صف<رشته>
    دیرکن ص.آزادسازی()
    ص.وارد کردن("مشتری ۱")
    ص.وارد کردن("مشتری ۲")
    ص.وارد کردن("مشتری ۳")
    سرچاپ ص.مشاهده()، ص.اندازه()
    سرچاپ ص.خارج کردن()، ص.خارج کردن()، ص.خالی است()
پایان
خروجیمشتری ۱ 3 مشتری ۱ مشتری ۲ false

وارد کردن enqueue

روال وارد کردن(x: T)
عضوی را به انتهای صف اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam

خارج کردن dequeue

روال خارج کردن(): T
عضو ابتدای صف را بیرون می‌آورد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam

مشاهده peek

روال مشاهده(): T
عضو ابتدای صف را بدون بیرون آوردن نشان می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam

اندازه size

روال اندازه(): صحیح
تعداد عضوها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam

خالی است is_empty

روال خالی است(): منطقی
اگر صف خالی باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam

آزادسازی free

روال آزادسازی()
حافظه‌ی صف را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Queue.salam

پشته Stack

ساختار پشته<T>
پشته: آخرین عضوی که اضافه شده، اولین عضوی است که برداشته می‌شود؛ مثل دسته‌ای کتاب روی هم.
نامانگلیسیگونهتوضیح
itemsitemsبردارعضوهای پشته؛ آخرین عضو بالای پشته است.
collections-Stack.salam
واردسازی مجموعه ها

روال ریشه:
    ناپایا پ := مجموعه ها.پشته {} برگردان مجموعه ها.پشته<رشته>
    دیرکن پ.آزادسازی()
    پ.افزودن("کتاب ۱")
    پ.افزودن("کتاب ۲")
    پ.افزودن("کتاب ۳")
    سرچاپ پ.مشاهده()، پ.اندازه()
    سرچاپ پ.برداشتن()، پ.برداشتن()، پ.اندازه()
    پ.پاک‌سازی()
    سرچاپ پ.خالی است()
پایان
خروجیکتاب ۳ 3 کتاب ۳ کتاب ۲ 1 true

افزودن push

روال افزودن(x: T)
عضوی روی پشته می‌گذارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam

برداشتن pop

روال برداشتن(): T
عضو بالای پشته را برمی‌دارد و برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam

مشاهده peek

روال مشاهده(): T
عضو بالای پشته را بدون برداشتن نشان می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam

اندازه size

روال اندازه(): صحیح
تعداد عضوها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam

خالی است is_empty

روال خالی است(): منطقی
اگر پشته خالی باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam

پاک‌سازی clear

روال پاک‌سازی()
همه‌ی عضوها را برمی‌دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam

آزادسازی free

روال آزادسازی()
حافظه‌ی پشته را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Stack.salam

زوج Pair

ساختار زوج<A، B>
یک زوج مقدار؛ برای برگرداندن دو چیز از یک روال یا نگه داشتن کلید و مقدار کنار هم.
نامانگلیسیگونهتوضیح
firstfirstAمقدار اول.
secondsecondBمقدار دوم.
collections-Pair.salam
واردسازی مجموعه ها

روال ریشه:
    ز := مجموعه ها.زوج { first = "تهران"، second = ۸۷۰۰۰۰۰ } برگردان مجموعه ها.زوج<رشته، صحیح>
    سرچاپ ز.first، ز.second
پایان
خروجیتهران 8700000

لیست حلقوی CircularList

ساختار لیست حلقوی<T>
لیست حلقوی: پس از آخرین عضو دوباره به اولی می‌رسید؛ برای نوبت‌دهی چرخشی، مثل نوبت بازیکنان.
نامانگلیسیگونهتوضیح
itemsitemsبردارعضوها به ترتیب افزوده‌شدن.
headheadصحیح = 0شماره‌ی عضو فعلی.
collections-CircularList.salam
واردسازی مجموعه ها

روال ریشه:
    ناپایا ح := مجموعه ها.لیست حلقوی {} برگردان مجموعه ها.لیست حلقوی<رشته>
    دیرکن ح.آزادسازی()
    هر ن در ["علی"، "سارا"، "رضا"]:
        ح.افزودن(ن)
    پایان
    تکرار ۴:
        چاپ ح.جاری()، ""
        ح.پیشروی()
    پایان
    سرچاپ ""
    ح.چرخش(۱)
    سرچاپ ح.تبدیل به بردار()، ح.دریافت(۰)، ح.اندازه()، ح.خالی است()
پایان
خروجیعلی سارا رضا علی ["رضا", "علی", "سارا"] رضا 3 false

افزودن add

روال افزودن(x: T)
عضوی به لیست اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam

اندازه size

روال اندازه(): صحیح
تعداد عضوها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam

خالی است is_empty

روال خالی است(): منطقی
اگر خالی باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam

دریافت get

روال دریافت(i: صحیح): T
عضو i خانه جلوتر از عضو فعلی؛ عدد منفی هم پذیرفته است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam

چرخش rotate

روال چرخش(k: صحیح)
عضو فعلی را k خانه جلو می‌برد (یا با عدد منفی، عقب).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam

جاری current

روال جاری(): T
عضو فعلی؛ نوبت کیست؟

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam

پیشروی advance

روال پیشروی()
نوبت را به عضو بعدی می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam

تبدیل به بردار to_vector

روال تبدیل به بردار(): بردار<T>
عضوها را از عضو فعلی به بعد، در یک وکتور تازه برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam

آزادسازی free

روال آزادسازی()
حافظه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-CircularList.salam

نگاشت درهم HashMap

ساختار نگاشت درهم<K، V>
نگاشت کلید به مقدار با جستجوی سریع؛ مثل دیکشنری. ترتیب عضوها قابل پیش‌بینی نیست؛ اگر ترتیب درج مهم است، نگاشت مرتب را ببینید.
نامانگلیسیگونهتوضیح
keyskeysK*نشانی آرایه‌ی کلیدها.
valsvalsV*نشانی آرایه‌ی مقدارها.
statestateصحیح*وضعیت هر خانه (خالی، پر یا حذف‌شده).
capcapصحیح = 0تعداد خانه‌ها.
countcountصحیح = 0تعداد کلیدهای موجود.
usedusedصحیح = 0تعداد خانه‌های استفاده‌شده، شامل حذف‌شده‌ها.
collections-HashMap.salam
روال ریشه:
    ناپایا ن := نگاشت {} برگردان نگاشت<رشته، صحیح>
    دیرکن ن.آزادسازی()
    سرچاپ ن.خالی است()
    ن.قراردادن("سیب"، ۳)
    ن.درج("انار"، ۵)
    ن.قراردادن("سیب"، ۴)
    سرچاپ ن.اندازه()، ن.دارد("سیب")، ن.دریافت("سیب")، ن.دریافت با پیش فرض("موز"، ۰)
    سرچاپ ن.حذف("انار")، ن.حذف("انار")، ن.اندازه()
    ناپایا پ := ن.پیمایشگر()
    تا پ.بعدی دارد():
        سرچاپ پ.کلید()، پ.مقدار()
        پ.بعدی()
    پایان
پایان
خروجیtrue 2 true 4 0 true false 1 سیب 4

قراردادن put

روال قراردادن(k: K، v: V)
مقدار کلید را می‌گذارد؛ اگر کلید از قبل باشد، مقدارش جایگزین می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

درج insert

روال درج(k: K، v: V)
همان قراردادن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

دارد has

روال دارد(k: K): منطقی
اگر کلید در نگاشت باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

دریافت get

روال دریافت(k: K): V
مقدار کلید را برمی‌گرداند. اگر کلید نباشد، مقدار صفر گونه را می‌گیرید؛ پس اول با دارد بپرسید یا دریافت با پیش فرض را به کار ببرید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

دریافت با پیش فرض get_or

روال دریافت با پیش فرض(k: K، def: V): V
مقدار کلید را برمی‌گرداند، یا اگر نباشد، مقدار پیش‌فرض.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

حذف remove

روال حذف(k: K): منطقی
کلید را حذف می‌کند؛ اگر نبود، نادرست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

اندازه size

روال اندازه(): صحیح
تعداد کلیدها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

خالی است is_empty

روال خالی است(): منطقی
اگر نگاشت خالی باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

پیمایشگر iter

روال پیمایشگر(): پیمایشگر نگاشت<K، V>
پیمایشگری روی کلیدها و مقدارها برمی‌گرداند. بیشتر وقت‌ها هر (کلید، مقدار) در ساده‌تر است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

آزادسازی free

روال آزادسازی()
حافظه‌ی نگاشت را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

پیمایشگر نگاشت MapIter

ساختار پیمایشگر نگاشت<K، V>
پیمایشگر نگاشت.
نامانگلیسیگونهتوضیح
keyskeysK*نشانی آرایه‌ی کلیدها.
valsvalsV*نشانی آرایه‌ی مقدارها.
statestateصحیح*وضعیت خانه‌ها.
capcapصحیح = 0تعداد خانه‌ها.
posposصحیح = 0جای فعلی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

بعدی دارد has_next

روال بعدی دارد(): منطقی
اگر عضو دیگری مانده باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

کلید key

روال کلید(): K
کلید فعلی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

مقدار value

روال مقدار(): V
مقدار فعلی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

بعدی next

روال بعدی()
به عضو بعدی می‌رود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-HashMap.salam

روال‌ها

دارد contains

روال دارد<T>(v: بردار<T>، x: T): منطقی
اگر x در وکتور باشد، درست برمی‌گرداند.
collections-Funcs.salam
واردسازی مجموعه ها

روال ریشه:
    ناپایا الف := وکتور {} برگردان وکتور<صحیح>
    دیرکن الف.آزادسازی()
    هر ع در [۱، ۲، ۳، ۲، ۵]:
        الف.افزودن(ع)
    پایان
    سرچاپ مجموعه ها.دارد(الف، ۳)، مجموعه ها.اندیس(الف، ۲)، مجموعه ها.آخرین اندیس(الف، ۲)، مجموعه ها.شمارش(الف، ۲)
    سرچاپ مجموعه ها.برعکس(الف)، مجموعه ها.برش(الف، ۱، ۳)
    ب := مجموعه ها.رونوشت(الف)
    مجموعه ها.جابجایی(الف، ۰، ۴)
    سرچاپ الف، ب
    ناپایا ج := وکتور {} برگردان وکتور<صحیح>
    دیرکن ج.آزادسازی()
    مجموعه ها.گسترش(ج، ب)
    مجموعه ها.گسترش(ج، ب)
    سرچاپ ج.طول()
پایان
خروجیtrue 1 3 2 [5, 2, 3, 2, 1] [2, 3, 2] [5, 2, 3, 2, 1] [1, 2, 3, 2, 5] 10

اندیس index_of

روال اندیس<T>(v: بردار<T>، x: T): صحیح
شماره‌ی نخستین تکرار x، یا منفی یک.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam

برعکس reverse

روال برعکس<T>(v: بردار<T>): بردار<T>
رونوشت برعکس وکتور؛ اصلی تغییر نمی‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam

رونوشت clone

روال رونوشت<T>(v: بردار<T>): بردار<T>
رونوشتی مستقل از وکتور.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam

برش slice

روال برش<T>(v: بردار<T>، start: صحیح، count: صحیح): بردار<T>
وکتور تازه‌ای با count عضو از جای start.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam

جابجایی swap

روال جابجایی<T>(v: بردار<T>، i: صحیح، j: صحیح)
جای دو عضو را عوض می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam

شمارش count_of

روال شمارش<T>(v: بردار<T>، x: T): صحیح
تعداد تکرارهای x در وکتور.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam

آخرین اندیس last_index_of

روال آخرین اندیس<T>(v: بردار<T>، x: T): صحیح
شماره‌ی آخرین تکرار x، یا منفی یک.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam

گسترش extend

روال گسترش<T>(dst &: بردار<T>، src: بردار<T>)
همه‌ی عضوهای src را به انتهای dst اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: collections-Funcs.salam