یکی از دربرگیرنده هایی که قابلیت اختصاص حافظه بصورت پویا را در C++‎‎ ایجاد می کند، vector از کتابخانه قالب استاندارد است. Vector می تواند تعدادی از نوع تعریف شده را در بر بگیرد و جالب این است که می تواند آنها در یک فضای پیوسته از حافظه نگهداری نماید. بر خلاف آنچه در آرایه های خام و معمولی در C++‎‎ در مورد overrunning مطرح است، استفاده کننده از vector ها هیچ نگرانی در این زمینه نخواهد داشت و با افزودن بیشتر از اندازه به انتهای آن استثنایی پرتاب می شود که می تواند این مشکل امنیتی را برطرف نماید. ]در مورد buffer overrunning باید گفت که این یکی از اولین موارد امنیتی است که برنامه سازها باید به آن توجه داشته باشند. در این روش حمله سعی می شود تا در انتهای آرایه ها کد یا داده هایی که برای حمله استفاده می شود، متصل شود و به سادگی و با اشتباه برنامه نویس مبنی بر عدم بررسی طول آرایه این کد می تواند به قسمت کد در حافظه منتقل شده و به روش دیگری pc را برای اجرا به آنجا انتقال می دهند.[ در کتابخانه قالب استاندارد، در بر گیرنده های دیگری هم وجود دارند که استفاده های خاصی را ایجاد می کنند (همانند list ها یا double-ended queueها)، اما معمولاً vector ها اولین انتخاب برنامه سازها برای استفاده های معمول و با کارآیی بالاست.

سازنده vector :
سازنده های زیر برای بردارها فراهم شده اند:

vector<int> testVector;
vector<long> testVector(10);
vector<float> testVector(5,1.0);

اولین سازنده بالا، می تواند یک بردار خالی برای نگهداری نوع int تعریف کند. سازنده دوم برداری برای نگهداری ده عدد داده از نوع long ایجاد می کند که تمام مقادیر اولیه آنها را به مقدار پیش فرض نوع long مقداردهی می کند. در خط سوم، سازنده آورده شده می تواند برداری با طول پنج را از نوع float تعریف کند که مقدار اولیه تمام این پنج عضو برابر 1.0 قرار داده می شود. بدیهی است که هر نوع داده تعریف شده ای می تواند در تعریف این بردارها مورد استفاده قرار گیرد.

همچنین یک سازنده کپی کننده هم برای بردار در نظر گرفته شده است. کد زیر برداری ده تایی از عدد 5 ساخته و با استفاده از سازنده کپی کننده یک نسخه جدید از بردار می سازد:
#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char** argv) {

vector<int> vectorOne(10,5);

vector<int> vectorTwo(vectorOne);

return EXIT_SUCCESS;
}


البته باید گفت که هیچ راهی برای فهمیدن اینکه برنامه چه عملی را انجام می دهد و آیا اصلا آنطور که انتظار می رود عمل می کنم یا خیر وجود ندارد.این به این خاطر است که ما هنوز نمی دانیم در بردار ما چه اطلاعاتی ذخیره شده است.

منبع: همکدی