দুটি ফাংশনই বিভিন্ন কাজ করে!
resize()
পদ্ধতি (এবং কন্সট্রাকটর আর্গুমেন্ট প্রাপ্ত করতে পার যে সমতূল্য) ঢোকান বা ভেক্টর করার উপাদানের ডিলিট উপযুক্ত সংখ্যা এটি দেওয়া আকার করতে (এটা তাদের মূল্য নির্দিষ্ট করতে ঐচ্ছিক দ্বিতীয় যুক্তি আছে)। এটি প্রভাব ফেলবে size()
, পুনরাবৃত্তি সমস্ত উপাদানগুলির উপর দিয়ে যাবে, পুশ_ব্যাক তাদের পরে sertোকানো হবে এবং আপনি সরাসরি এটি ব্যবহার করে অ্যাক্সেস করতে পারবেন operator[]
।
reserve()
পদ্ধতি ওনলি মেমোরি বরাদ্দ, কিন্তু পাতার এটা uninitialized। এটি কেবল প্রভাবিত করে capacity()
তবে size()
অপরিবর্তিত থাকবে। বস্তুর জন্য কোনও মূল্য নেই, কারণ ভেক্টরে কোনও কিছুই যুক্ত হয় না। এরপরে আপনি যদি উপাদানগুলিকে সন্নিবেশ করেন তবে কোনও পুনরায় স্থান ঘটবে না, কারণ এটি আগে থেকেই করা হয়েছিল, তবে এটিই কেবল কার্যকর।
সুতরাং এটি আপনি যা চান তার উপর নির্ভর করে। আপনি যদি 1000 ডিফল্ট আইটেমের অ্যারে চান তবে ব্যবহার করুন resize()
। আপনি যদি এমন একটি অ্যারে চান যেখানে আপনি 1000 টি আইটেম সন্নিবেশ করানোর আশা করছেন এবং কয়েকটি বরাদ্দ এড়াতে চান তবে ব্যবহার করুন reserve()
।
সম্পাদনা: ব্লাস্টফার্নেসের মন্তব্য আমাকে পুনরায় প্রশ্নটি পড়তে এবং বুঝতে অনুধাবন করেছে যে আপনার ক্ষেত্রে সঠিক উত্তরটি ম্যানুয়ালি প্রিলোকল্ট না করা। আপনার প্রয়োজন অনুসারে কেবল উপাদানগুলি সন্নিবেশ করাতে থাকুন। ভেক্টরটি প্রয়োজনীয়ভাবে স্বয়ংক্রিয়ভাবে পুনঃস্থাপন করবে এবং উল্লিখিত ম্যানুয়াল পদ্ধতির চেয়ে আরও দক্ষতার সাথে এটি করবে । reserve()
আপনি যখন মোট আকারের যুক্তিসঙ্গতভাবে যথাযথ প্রাক্কলনটি ব্যবহার করতে পারেন তখন কেবলমাত্র তখনই উপলব্ধি হয় যেখানে আপনার সহজেই আগেই সহজলভ্য হতে হবে।
সম্পাদনা 2: বিজ্ঞাপন প্রশ্ন সম্পাদনা: আপনার যদি প্রাথমিক অনুমান থাকে তবে reserve()
সেই অনুমান। যদি এটি পর্যাপ্ত পরিমাণে পরিণত হয় না, তবে কেবল ভেক্টরকে এটি করতে দিন।
std::vector
।