২-২ঃ ভেক্টর ক্যাপাসিটি ফাংশন
আমাদের প্রয়োজন অনুসারে আমাদের বর্তমান ভেক্টর টির সাইজ কতো তা জানতে হতে পারে। সেক্ষেত্রে আমরা কিছু বিল্ট ইন ফাংশন ব্যবহার করে খুব সহজে ভেক্টরটির সাইজ বের করে ফেলতে পারি
v.size() -> এই ফাংশনের মাধ্যমে আমরা O(1) টাইম কমপ্লেক্সিটি তে ভেক্টর এর সাইজ জানতে পারবো
vector< int > v(10) ;
cout << v.size() << endl ; // returns 10 .
v.max_size() -> এই ফাংশনের মাধ্যমে একটি ভেক্টর ম্যক্সিমাম কত সাইজের হতে পারে তার সম্পর্কে আমরা ধারণা পেতে পারি
vector< int > v ;
cout << v.max_size() << endl ; // এটি একটি ১০^৯ এর কাছাকাছি একটি ভ্যালু রিটার্ন করে .
// তবে অনলাইন জাজের ক্ষেত্রে সাইজ টি এত বেশি হবে না।
ভেক্টরের ভ্যালু মুছে ফেলাঃ মাঝে মাঝে আমাদের ভেক্টরটি তে যা যা আছে তা মুছে ফেলার প্রয়োজন হয়। এই ক্ষেত্রে আমরা একটি বিল্ট ইন ফাংশন ব্যবহার করতে পারি তা হলো v.clear() ফাংশন। এই ফানশনের সাহায্যে আমরা O(N) কমপ্লক্সিটি এর সাহায্যে ভেক্টরের সব ভ্যালু গুলা মুছে দিতে পারি। এই ক্ষেত্রে সে ভ্যালু গুলা মুছে দিয়ে সাইজ ০ করে দেয় কিন্তু মেমরি গুলা ক্লিয়ার করে না
vector < int > v1 = {1,2,3,4} ; // একটি ভেক্টর ডিক্লেয়ার করে সেখানে এই ভ্যালু গুলা দিয়ে ইনিশিয়ালাইজ করলাম
cout << v1.size() << endl ; // যেহেতু এখানে ৪ টি ভ্যালু আছে তাই এই ভেক্টরের সাইজ ৪ রিটার্ন করবে
v1.clear() ; // ভেক্টরটি ক্লিয়ার করা হলো
cout << v1.size() << endl ; // ভেক্টর টি ক্লিয়ার করার কারণে তার সাইজ ০ প্রিন্ট হবে
cout << v1[1] << endl ; // যেহেতু মেমরি গুলা ক্লিয়ার করে না তাই আমরা চাইলে ইন্ডেক্স ব্যবহার করে ভ্যালু গুলা এক্সেস করতে পারবো
আরো কিছু ফাংশনঃ
v.empty() -> এই ফাংশন ব্যবহার করে আমরা ভেক্টরটি খালি কিনা চেক করতে পারবো। ভেক্টর খালি হলে ফাংশন টি ১( true) রিটার্ন করে খালি না হলে 0 ( false) রিটার্ন করে
vector < int > v1 = {1,2,3,4} ; // একটি ভেক্টর ডিক্লেয়ার করে সেখানে এই ভ্যালু গুলা দিয়ে ইনিশিয়ালাইজ করলাম
cout << v1.empty() << endl ; // ০ প্রিন্ট হবে কারণ v1 খালি নয়
v1.clear() ; // ভেক্টরটি খালি করা হলো
cout << v1.empty() << endl ; // ১ প্রিন্ট হবে কারণ v1 খালি।
v.resize() -> এই ফাংশনের সাহায্যে প্রোগ্রাম এর রান টাইম এ আমরা ভেক্টর সাইজ কে পরিবর্তন করতে পারি। এই ক্ষেত্রে ভেক্টরের যে অংশগুলোতে ভ্যালু ছিলো তা ঠিক মতো থাকবে, এবং বাকি ঘর গুলো ০ দিয়ে ইনিশিয়ালাইজ হবে। চাইলে আমরা v.size(new_size, desired_value) ব্যবহার করে বাকি পজিশন গুলাতে নিজের ইচ্ছা অনুযায়ী ভ্যালু ও সেট করতে পারি। v.resize(new_size) ফাংশনের টাইম কমপ্লেক্সিটি O( new_size - previous_size ) ;
vector<int> v1 = {1, 2, 3, 4}; // একটি ভেক্টর ডিক্লেয়ার করে সেখানে এই ভ্যালু গুলা দিয়ে ইনিশিয়ালাইজ করলাম
for (int i = 0; i < v1.size(); i++)
{
cout << v1[i] << " ";
} // 1 2 3 4 প্রিন্ট করবে
v1.resize(10); // ভেক্টরের সাইজ পরিবর্তন করে ১০ করে দিবে
for (int i = 0; i < v1.size(); i++)
{
cout << v1[i] << " ";
} // 1 2 3 4 0 0 0 0 0 0
// যেহেতু ৪ নাম্বার পজিশন পর্যন্ত ভ্যালু ছিলো তা ঠিক মতো আছে, বাকি সব পজিশন ০ ভ্যালু দিয়ে ইনিশায়ালাইজ করেছে
v1.resize(10,100); // ভেক্টরের সাইজ পরিবর্তন করে ১০ করে দিবে এবং বাকি ভ্যালু গুলা ১০০ দিয়ে ইনিশিয়ালাইজ করে দিবে
Last updated