Saturday, June 23, 2018

Vector

তোমাদের নিশ্চয় Array নিয়ে ধারণা আছে!!! Array এর ধারণা থাকলে তোমরা ভেক্টর খুব সহজেই বুঝতে পারবে। Vector অনেকটা Array এর মতোই পার্থক্য শুধু একটাই; Vector এ মেমরি ডাইনামিক ভাবে allocate করা হয়। অনেক গুলো কেস নিয়ে যখন আমরা প্রোগ্রাম বিল্ড করি তখন Array নিয়ে কাজ করতে হলে Array এর একটা সাইজ উল্লেখ করে দিতে হয়। প্রোগ্রাম যখন এক্সেকিউট হয় তখন এলোকেটকৃত মেমরি সব সময় ব্যবহৃত হয় না। আবার অনেক বড় সাইজের 2D Array নিয়ে কাজ করাও অনেক সময় সমস্যার কারণ হয়। এই ইস্যুগুলো Vector এর মাধ্যমে খুব সহজেই সমাধান যোগ্য। যেহেতু ভেক্টরে ঠিক যতটুকু প্রয়োজন ঠিক ততটুকু মেমোরি Allocate হয়, তাই ভেক্টর ব্যবহার করলে মেমরি allocation নিয়ে চিন্তা থাকে না।

এখন আসি ভেক্টর কিভাবে ডিক্লার করতে হয় তা নিয়ে।
vector < int > apple, mouse ;
vector < long long int > b;
vector < char > ch;

ডিক্লারেশন তো করলাম। এখন ভেক্টরে ডাটা কিভাবে রাখতে হয় তা নিয়ে বলছি। মনেকর, উপরের apple একটি  integer ভেক্টর। আমি এখন apple ভেক্টরে কিছু ডাটা রাখবো। ভেক্টরে ডাটা রাখার জন্য ভেক্টরের পেছনে ডাটা push করতে হয়।


apple.push_back(20);
apple.push_back(10);
apple.push_back(30);
apple.push_back(40);
apple.push_back(50);

এভাবে ভেক্টরে ডাটা রাখা যায়। যে ডাটা সবার শেষে পুশ করা হয়েছে সেটা সবার লাস্টে থাকবে। এখন মনেকর, apple নামের ভেক্টরটিতে কতটি ডাটা আছে তা আমি জানতে চাচ্ছি। apple.size( ) এই function দিয়ে কল করলে তা সহজেই জানা যাবে। এখানে apple এর পরিবর্তে তুমি যে ভেক্টর এর ডাটার সাইজ জানতে চাও তা দিতে হবে। 

ভেক্টর নিয়ে এবার একটি মজার তথ্য দিবো। আমরা একটি Array থেকে  আরেকটি Array তে ডাটা ট্রান্সফার করার জন্য লুপ ব্যবহার করি। ভেক্টরে তেমন লুপ ব্যবহার করতে হয় না। একটি ভেক্টর থেকে অন্য ভেক্টরে খুব সহজেই ডাটা ট্রান্সফার বা কপি করা যায় । ঠিক এইভাবে -
mouse=apple;  এখানে apple এর ডাটা mouse এ কপি করা হয়েছে।

এবার মনেকর তোমার ইচ্ছা হলো ভেক্টরটি সম্পূর্ণ খালি করে ফেলবে। তা তুমি খুব সহজেই করতে পারো apple.clear( ) function ব্যবহার করে। 


Code:


#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;

int main()
{
    vector < int > v, v1;
    int a;
    for(int i=0; ;i++) //input data at vector v
    {
        scanf("%d", &a);
        if(a==0)
            break;
        v.push_back(a);
    }
    for(int j=0; j<(int)v.size(); j++) //showing data of vector v
    {
        printf("%d ",v[j]);
    }

    v1=v;  // Coping values of v into v1.

    for(int j=0; j<(int)v1.size(); j++)//showing data of vector v
    {
        printf("%d ",v1[j]);
    }
    v.clear(); //clearing data of vector V
    return 0;
}

2 comments:

  1. খুবই গুরুত্বপুর্ণ পোস্ট। সহজেই ভেক্টর আলোচনা করা হয়েছে।

    ReplyDelete