ভেক্টরগুলির দুটি "দৈর্ঘ্য" বৈশিষ্ট্য রয়েছে যার অর্থ বিভিন্ন জিনিস:
size
ভেক্টরটিতে ব্যবহারযোগ্য উপাদানগুলির সংখ্যা। এটি আপনার সঞ্চিত জিনিসগুলির সংখ্যা। এটি একটি ধারণাগত দৈর্ঘ্য।
capacity
ভেক্টর বর্তমানে যে পরিমাণ মেমরি বরাদ্দ করেছে তাতে কতগুলি উপাদান মাপসই হয়।
capacity >= size
অবশ্যই সর্বদা সত্য হতে হবে, তবে তাদের সর্বদা সমান হওয়ার কোনও কারণ নেই। উদাহরণস্বরূপ, আপনি যখন কোনও উপাদান অপসারণ করবেন, বরাদ্দ সঙ্কুচিত করার জন্য একটি নতুন বরাদ্দ একটি ছোট বালতি তৈরি করা উচিত এবং বাকী বিষয়বস্তু ("বরাদ্দ করুন, সরান, বিনামূল্যে") এর উপরে সরিয়ে নেওয়া দরকার।
একইভাবে, capacity == size
এবং যদি আপনি একটি উপাদান যোগ করেন তবে ভেক্টর একটি উপাদান দ্বারা বরাদ্দ বাড়িয়ে তুলতে পারে (অন্য "বরাদ্দ, সরান, বিনামূল্যে" অপারেশন), তবে সাধারণত আপনি একাধিক উপাদান যুক্ত করতে চলেছেন। ধারণক্ষমতা চাহিদা বৃদ্ধি পারেন, ভেক্টর তার ধারণক্ষমতা বৃদ্ধি হবে বেশি এক উপাদান যাতে আপনি সবকিছু আবার সরাতে প্রয়োজন সামনে আরো কয়েকটি উপাদান যুক্ত করতে পারেন।
এই জ্ঞান দিয়ে, আমরা আপনার প্রশ্নের উত্তর দিতে পারি:
std::vector<T>::resize()
অ্যারের আকার পরিবর্তন করে । আপনি যদি এটির বর্তমান আকারের চেয়ে ছোট আকার পরিবর্তন করেন তবে অতিরিক্ত জিনিসগুলি ধ্বংস হয়ে যায়। আপনি যদি এটির বর্তমান আকারের চেয়ে বড় আকার পরিবর্তন করেন তবে শেষে যুক্ত হওয়া "নতুন" অবজেক্টগুলি ডিফল্ট-আরম্ভ করা হয়।
std::vector<T>::shrink_to_fit()
বর্তমান আকারের সাথে মেলে সামর্থ্যের পরিবর্তন করতে বলে asks (প্রয়োগগুলি এই অনুরোধটিকে সম্মান জানাতে পারে বা নাও পারে । তারা সক্ষমতা হ্রাস করতে পারে তবে এটি আকারের সমান করে না। তারা কিছু করতে পারে না)) অনুরোধটি পূরণ হলে এটি কিছু বা সমস্ত অব্যবহৃত অংশ বাতিল করে দেবে) ভেক্টর বরাদ্দ। আপনি যখন ভেক্টর তৈরির কাজ শেষ করেন আপনি সাধারণত এটি ব্যবহার করবেন এবং এটিতে আর কোনও আইটেম যুক্ত করবেন না। (আপনি যদি কয়টি আইটেম যুক্ত করবেন তা std::vector<T>::reserve()
আগেই জানা থাকে যে কোনও shrink_to_fit
কিছু করার উপর নির্ভর না করে কোনও আইটেম যুক্ত করার আগে ভেক্টরকে বলাই ভাল ))
সুতরাং আপনি ভেক্টরে ধারণামূলকভাবে কতগুলি জিনিস রয়েছে তাresize()
পরিবর্তন করতে আপনি ব্যবহার করেন।
shrink_to_fit()
ভেক্টরটি ভেক্টরটিতে ধারণামূলকভাবে কতটা স্টাফ রয়েছে তা পরিবর্তন না করে আপনি অভ্যন্তরীণভাবে ভেক্টর যে অতিরিক্ত জায়গা বরাদ্দ করেছেন তা হ্রাস করতে আপনি ব্যবহার করেন।