কম্পিউটার টিউটোরিয়াল

C++-এ std::vector::resize() বনাম std::vector::reserve() পার্থক্য


ভেক্টরগুলো ডাইনামিক অ্যারে এর মতো স্বয়ংক্রিয়ভাবে আকার পরিবর্তন করতে পারে যখন কোনো উপাদান ইনসার্ট বা ডিলিট করা হয়, কন্টেইনার তাদের স্টোরেজ স্বয়ংক্রিয়ভাবে হ্যান্ডেল করে।

vector resize() এবং vector reserve() এর প্রধান পার্থক্য হচ্ছে resize() ভেক্টরের আকার পরিবর্তন করতে ব্যবহৃত হয় যেখানে reserve() তা করে না। reserve() শুধু নির্দিষ্ট সংখ্যক উপাদান স্টোর করার জন্য মেমরি অ্যালোকেট করে রি-অ্যালোকেশন ছাড়া। কিন্তু resize()-এ, যদি সংখ্যা বর্তমান সংখ্যার চেয়ে ছোট হয় তবে সেটি মেমরি রিসাইজ করে এবং অতিরিক্ত স্পেস ডিলিট করে দেয়।

vector::resize()

Vector resize() এর কাজ হচ্ছে এর আকার পরিবর্তন করা।

উদাহরণ

সোর্স কোডের ধাপসমূহ:

শুরু    v ভেরিয়েবল ভেক্টর টাইপ ঘোষণা করুন।    it ভেরিয়েবল ভেক্টর টাইপের ইটারেটর হিসেবে ঘোষণা করুন।    c এবং i দুটি ভেরিয়েবল ইন্টিজার ডেটা টাইপে ঘোষণা করুন।    while (TRUE) করুন       "১. ভেক্টরের আকার" প্রিন্ট করুন।       "২. ভেক্টরে উপাদান ইনসার্ট করুন" প্রিন্ট করুন।       "৩. ভেক্টর রিসাইজ করুন" প্রিন্ট করুন।       "৪. ইটারেটর দিয়ে প্রদর্শন করুন" প্রিন্ট করুন।       "৫. বের হোন" প্রিন্ট করুন।       "আপনার পছন্দ লিখুন:" প্রিন্ট করুন।       c ভেরিয়েবলের মান ইনপুট নিন।       Switch(c)          Case 1.             "ভেক্টরের আকার:" প্রিন্ট করুন।             ভেক্টরের আকার প্রিন্ট করতে size() ফাংশন কল করুন।             Break.          Case 2.             "ইনসার্ট করার মান লিখুন:" প্রিন্ট করুন।             i ভেরিয়েবলের মান ইনপুট নিন।             ভেক্টরে মান ইনপুট দিতে push_back() ফাংশন কল করুন।             Break.          Case 3.             "ভেক্টরের উপাদান রিসাইজ:" প্রিন্ট করুন।             ভেক্টর রিসাইজ করতে resize() ফাংশন কল করুন।             Break.          Case 4.             "ইটারেটর দিয়ে ভেক্টর প্রদর্শন:" প্রিন্ট করুন।             for (it = v.begin(); it != v.end(); it++)                it ইটারেটরের মান প্রিন্ট করুন।             Break.          case 5.             বের হওয়ার জন্য exit() ফাংশন কল করুন।             break.          Default.             "ভুল পছন্দ" প্রিন্ট করুন। শেষ।

উদাহরণ

#include <iostream> #include <vector> using namespace std; int main() {    vector<int> v;    vector<int>::iterator it;    int c, i;    while (1) {       cout << "১. ভেক্টরের আকার" << endl;       cout << "২. ভেক্টরে উপাদান ইনসার্ট করুন" << endl;       cout << "৩. ভেক্টর রিসাইজ করুন" << endl;       cout << "৪. ইটারেটর দিয়ে প্রদর্শন করুন" << endl;       cout << "৫. বের হোন" << endl;       cout << "আপনার পছন্দ লিখুন: ";       cin >> c;       switch(c) {          case 1:             cout << "ভেক্টরের আকার: ";             cout << v.size() << endl; // ভেক্টরের আকার প্রিন্ট             break;          case 2:             cout << "ইনসার্ট করার মান লিখুন: ";             cin >> i;             v.push_back(i); // মান ইনসার্ট             break;          case 3:             cout << "ভেক্টরের উপাদান রিসাইজ:" << endl;             v.resize(4); // ভেক্টর রিসাইজ             break;          case 4:             cout << "ইটারেটর দিয়ে ভেক্টর প্রদর্শন: ";             for (it = v.begin(); it != v.end(); it++) // ভেক্টরের সকল মান প্রিন্ট                {                cout << *it << " ";             }             cout << endl;             break;          case 5:             exit(1);             break;          default:             cout << "ভুল পছন্দ" << endl;       }    }    return 0; }

আউটপুট

১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. ভেক্টর রিসাইজ করুন ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ১ ভেক্টরের আকার: ০ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. ভেক্টর রিসাইজ করুন ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ২ ইনসার্ট করার মান লিখুন: ১ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. ভেক্টর রিসাইজ করুন ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ২ ইনসার্ট করার মান লিখুন: ২ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. ভেক্টর রিসাইজ করুন ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ২ ইনসার্ট করার মান লিখুন: ৪ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. ভেক্টর রিসাইজ করুন ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ২ ইনসার্ট করার মান লিখুন: ৫ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. ভেক্টর রিসাইজ করুন ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ২ ইনসার্ট করার মান লিখুন: ৫ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. ভেক্টর রিসাইজ করুন ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ৪ ইটারেটর দিয়ে ভেক্টর প্রদর্শন: ১ ২ ৪ ৫ ৫ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. ভেক্টর রিসাইজ করুন ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ৩ ভেক্টরের উপাদান রিসাইজ: ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. ভেক্টর রিসাইজ করুন ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ৪ ইটারেটর দিয়ে ভেক্টর প্রদর্শন: ১ ২ ৪ ৫ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. ভেক্টর রিসাইজ করুন ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ৫

vector::reserve()

Vector reserve() ইঙ্গিত দেয় যে ভেক্টরটি এমনভাবে তৈরি হয়েছে যাতে সেটি রি-অ্যালোকেশন ছাড়া নির্দিষ্ট সংখ্যক উপাদান সংরক্ষণ করতে পারে। উদাহরণের ধাপসমূহ

অ্যালগরিদম

শুরু    v ভেরিয়েবল ভেক্টর টাইপ ঘোষণা করুন।    it ভেরিয়েবল ভেক্টর টাইপের ইটারেটর হিসেবে ঘোষণা করুন।    c এবং i দুটি ভেরিয়েবল ইন্টিজার ডেটা টাইপে ঘোষণা করুন।    while (1) করুন       "১. ভেক্টরের আকার" প্রিন্ট করুন।       "২. ভেক্টরে উপাদান ইনসার্ট করুন" প্রিন্ট করুন।       "৩. ভেক্টর রিজার্ভ করুন" প্রিন্ট করুন।       "৪. ইটারেটর দিয়ে প্রদর্শন করুন" প্রিন্ট করুন।       "৫. বের হোন" প্রিন্ট করুন।       "আপনার পছন্দ লিখুন:" প্রিন্ট করুন।       c ভেরিয়েবলের মান ইনপুট নিন।       Switch(c)          Case 1.             "ভেক্টরের আকার:" প্রিন্ট করুন।             ভেক্টরের আকার প্রিন্ট করতে size() ফাংশন কল করুন।             Break.          Case 2.             "ইনসার্ট করার মান লিখুন:" প্রিন্ট করুন।             i ভেরিয়েবলের মান ইনপুট নিন।             ভেক্টরে মান ইনপুট দিতে push_back() ফাংশন কল করুন।             Break.          Case 3.             "ভেক্টরের উপাদান রিজার্ভ:" প্রিন্ট করুন।             ভেক্টরের আকার রিজার্ভ করতে reserve() ফাংশন কল করুন।                Break.          Case 4.             "ইটারেটর দিয়ে ভেক্টর প্রদর্শন:" প্রিন্ট করুন।             for (it = v.begin(); it != v.end(); it++)                it ইটারেটরের মান প্রিন্ট করুন।             Break.          case 5.             বের হওয়ার জন্য exit() ফাংশন কল করুন।             break.          Default.           "ভুল পছন্দ" প্রিন্ট করুন। শেষ।

উদাহরণ

#include <iostream> #include <vector> using namespace std; int main() {    vector<int> v;    vector<int>::iterator it;    int c, i;    while (1) {       cout << "১. ভেক্টরের আকার" << endl;       cout << "২. ভেক্টরে উপাদান ইনসার্ট করুন" << endl;       cout << "৩. ভেক্টর রিজার্ভ করুন" << endl;       cout << "৪. ইটারেটর দিয়ে প্রদর্শন করুন" << endl;       cout << "৫. বের হোন" << endl;       cout << "আপনার পছন্দ লিখুন: ";       cin >> c;       switch(c) {          case 1:             cout << "ভেক্টরের আকার: ";             cout << v.size() << endl;             break;          case 2:             cout << "ইনসার্ট করার মান লিখুন: ";             cin >> i;             v.push_back(i);             break;          case 3:             cout << "ভেক্টরের উপাদান রিজার্ভ।" << endl;             v.reserve(100); // ভেক্টরের উপাদান রিজার্ভ             break;          case 4:             cout << "ইটারেটর দিয়ে ভেক্টর প্রদর্শন: ";             for (it = v.begin(); it != v.end(); it++) {                cout << *it << " ";             }             cout << endl;             break;          case 5:             exit(1);             break;          default:             cout << "ভুল পছন্দ" << endl;       }    }    return 0; }

আউটপুট


১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. রিজার্ভ ভেক্টর ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ১ ভেক্টরের আকার: ০ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. রিজার্ভ ভেক্টর ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ২ ইনসার্ট করার মান লিখুন: ১ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. রিজার্ভ ভেক্টর ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ২ ইনসার্ট করার মান লিখুন: ২ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. রিজার্ভ ভেক্টর ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ২ ইনসার্ট করার মান লিখুন: ৩ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. রিজার্ভ ভেক্টর ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ২ ইনসার্ট করার মান লিখুন: ৪ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. রিজার্ভ ভেক্টর ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ২ ইনসার্ট করার মান লিখুন: ৫ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. রিজার্ভ ভেক্টর ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ৩ ভেক্টরের উপাদান রিজার্ভ। ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. রিজার্ভ ভেক্টর ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ৪ ইটারেটর দিয়ে ভেক্টর প্রদর্শন: ১ ২ ৩ ৪ ৫ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. রিজার্ভ ভেক্টর ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন আপনার পছন্দ লিখুন: ৪ ইটারেটর দিয়ে ভেক্টর প্রদর্শন: ১ ২ ৩ ৪ ৫ ১. ভেক্টরের আকার ২. ভেক্টরে উপাদান ইনসার্ট করুন ৩. রিজার্ভ ভেক্টর ৪. ইটারেটর দিয়ে প্রদর্শন করুন ৫. বের হোন

  1. C++-এ কনস্ট্রাক্টরে ভেক্টর পাস করা (Passing a vector to constructor in C++)

  2. C++-এ std::vector শাফেল করার পদ্ধতি

  3. C++-এ vector::resize() বনাম vector::reserve() পার্থক্য

  4. C++-এ টাইপ ইনফারেন্স (Type Inference)