std::vector
হ'ল একটি টেম্পলেট শ্রেণি যা হিপগুলিতে সঞ্চিত একটি গতিশীল অ্যারে 1 সজ্জিত করে, যা উপাদানগুলি যুক্ত করা বা অপসারণ করা হলে স্বয়ংক্রিয়ভাবে বৃদ্ধি এবং সঙ্কুচিত হয়। এটি সমস্ত হুক সরবরাহ করে ( begin()
,, end()
পুনরুদ্ধারকারী, ইত্যাদি) যা এটি এসটিএল এর বাকী অংশের সাথে দুর্দান্তভাবে কাজ করে। এটিতে বেশ কয়েকটি দরকারী পদ্ধতি রয়েছে যা আপনাকে এমন ক্রিয়াকলাপ সম্পাদন করতে দেয় যা একটি সাধারণ অ্যারেতে জটিল হয়ে উঠবে যেমন উদাহরণস্বরূপ কোনও ভেক্টরের মাঝখানে উপাদানগুলি সন্নিবেশ করানো (এটি নীচের উপাদানগুলিকে পর্দার পিছনে সরানোর সমস্ত কাজ পরিচালনা করে)।
যেহেতু এটি স্তূপে বরাদ্দকৃত মেমরির উপাদানগুলিকে সঞ্চয় করে, তাই এটি স্ট্যাটিক অ্যারেগুলির ক্ষেত্রে কিছুটা ওভারহেড থাকে।
std::array
এটি একটি টেম্পলেট শ্রেণি যা স্ট্যাটিক্যালি আকারের অ্যারেগুলি encapsulate করে, বস্তুর ভিতরেই সঞ্চিত থাকে যার অর্থ আপনি যদি স্ট্যাকের উপর ক্লাসটি ইনস্ট্যান্ট করেন তবে অ্যারে নিজেই স্ট্যাকের উপরে থাকবে। এর আকারটি সংকলনের সময় জানতে হবে (এটি একটি টেম্পলেট প্যারামিটার হিসাবে পাস হয়েছে), এবং এটি বাড়তে বা সঙ্কুচিত করতে পারে না।
এটি এর চেয়ে বেশি সীমাবদ্ধ std::vector
তবে এটি প্রায়শই আরও দক্ষ, বিশেষত ছোট আকারের জন্য, কারণ অনুশীলনে এটি বেশিরভাগই সি-স্টাইল অ্যারের চারপাশে একটি হালকা ওজনের .েকে দেওয়া হয়। তবে এটি আরও সুরক্ষিত, যেহেতু পয়েন্টারকে অন্তর্নিহিত রূপান্তর অক্ষম করা হয়েছে, এবং এটি std::vector
এবং অন্যান্য ধারকগুলির এসটিএল-সম্পর্কিত কার্যকারিতা অনেকগুলি সরবরাহ করে , তাই আপনি এটি এসটিএল অ্যালগরিদম & কো সহ সহজেই ব্যবহার করতে পারেন। যাইহোক, স্থির আকারের খুব সীমাবদ্ধতার জন্য এটি এর চেয়ে অনেক কম নমনীয় std::vector
।
একটি পরিচিতির জন্য std::array
, এই নিবন্ধটি একবার দেখুন ; std::vector
এটিতে যে ক্রিয়াকলাপ সম্ভব তাড়াতাড়ি পরিচয় করিয়ে দেওয়ার জন্য, আপনি এর ডকুমেন্টেশনটি দেখতে চাইতে পারেন ।
প্রকৃতপক্ষে, আমি মনে করি যে স্ট্যান্ডার্ডে এগুলি বিভিন্ন অপারেশনের সর্বাধিক জটিলতার পরিপ্রেক্ষিতে বর্ণিত হয়েছে (যেমন ধ্রুবক সময়ে এলোমেলো অ্যাক্সেস, লিনিয়ার সময়ে সমস্ত উপাদানগুলির উপর পুনরাবৃত্তি, ধ্রুবক মোড়িত সময়ের শেষে উপাদানগুলি যুক্ত এবং অপসারণ, ইত্যাদি), তবে এএফআইএকে ডায়নামিক অ্যারে ব্যবহার করা ছাড়া এ জাতীয় প্রয়োজনীয়তাগুলি পূরণের অন্য কোনও পদ্ধতি নেই। @ লুক্রেটিয়ালের বিবরণ অনুসারে, মানকটির আসলে প্রয়োজন হয় যে উপাদানগুলি স্বচ্ছলভাবে সংরক্ষণ করা হয়, সুতরাং এটি একটি গতিশীল অ্যারে, যেখানে সম্পর্কিত বরাদ্দকারী এটি রাখে সেখানে সঞ্চিত হয়।
std::vector
বনামের তুলনাstd::array
এবং শর্তগুলি কীভাবে আলাদা তা খুঁজছি ।