زبان C++ ظرفهای مختلفی را برای ذخیرهی عناصر همنوع بهصورت مرتب در اختیار شما میگذارد.
std::array برای ظرفهایی با اندازهی ثابت است و std::vector هم قابلیت تغییر اندازه بهصورت پویا را دارد.
وقتی یک آرایه یا بردار اعلان میکنید، باید نوع عناصری را که آن ظرف نگه میدارد مشخص کنید. آرایهها به اندازه هم نیاز دارند. به این مثالها نگاه کنید تا نحوهی مقداردهی اولیهی این دو نوع ظرف را ببینید:
#include <array>
#include <string>
// std::array<element_type, size> variable_name {list of elements}
std::array<std::string, 3> indie_rock {"yeah", "yeah", "yeah"};
// indie_rock contains the elements "yeah" three times
بردارها معمولاً به فضای بیشتری نیاز دارند، چون برای رشدهای بعدی حافظه اختصاص میدهند. لازم نیست اندازه را مشخص کنید:
#include <vector>
// std::vector<element_type> variable_name {list of elements}
std::vector<int> countdown {3, 2, 1};
// my_vector contains the elements 3, 2 and 1
نکته: هنوز لازم نیست سازوکار دقیق مفهوم «قالب» را بدانید؛ این مفهوم در ادامهی درخت برنامهی درسی، صفحهی مخصوص خودش را خواهد داشت.
بردارها و آرایهها برای دسترسی به عناصرشان از توابع یکسانی استفاده میکنند.
میتوانید با توابع عضو front و back اولین و آخرین عنصر ظرف را به دست آورید.
برای دسترسی به عناصر مشخص هم at و عملگر [] وجود دارند.
countdown[0];
// => 3
countdown.at(2);
// => 1
countdown[1] = 4;
// countdown now contains 3, 4 and 1
indie_rock.back() = "yeahs";
// indie_rock is now "yeah", "yeah", "yeahs"
نکته: اگر موقعیتی را انتخاب کنید که در محدودهی ظرف شما نباشد،
[]ممکن است به رفتار تعریفنشده منجر شود. تابعatیک استثنا ایجاد میکند که در بلندمدت میتواند کارتان را راحتتر کند.
چون vector اندازهی ثابتی ندارد، میتوان عناصر را به آن اضافه یا از آن حذف کرد.
دو تابع رایج برای این کار emplace_back و pop_back هستند.
std::vector<std::string> witches {"Holly", "Alyssa", "Shannen"};
witches.pop_back();
// Shannen is no longer with the witches
witches.emplace_back("Rose");
// Rose has joined the team
میتوانید با تابع عضو empty خالی بودن ظرف را بررسی کنید.
اگر میخواهید تعداد عناصر را بدانید، میتوانید از size استفاده کنید.