Vectors এবং Arrays এর ব্যবহার

Collections এবং Iterators (কলেকশনস এবং ইটারেটরস) - রাস্ট (Rust) - Computer Programming

276

Arrays (অ্যারেই)

রাস্টে arrays হল একটি সংগ্রহ যা একধরনের ডেটা একত্রে রাখে। অ্যারেতে সব উপাদানের ধরন একই ধরনের হয় এবং আকার (length) স্থির থাকে, অর্থাৎ একবার অ্যারে তৈরি হলে তার আকার পরিবর্তন করা যায় না।

অ্যারের মৌলিক গঠন:

  • ফিক্সড আকার (Fixed-size): অ্যারের আকার কোডের মাধ্যমে নির্ধারণ করা হয় এবং তা পরিবর্তনযোগ্য নয়।
  • ডেটা টাইপ: সব উপাদানের ডেটা টাইপ একই হতে হবে।

অ্যারের উদাহরণ:

fn main() {
    let numbers = [1, 2, 3, 4, 5];  // একটি অ্যারে যার মধ্যে ৫টি সংখ্যা আছে

    // অ্যারে থেকে একটি উপাদান অ্যাক্সেস করা
    println!("The first number is: {}", numbers[0]);

    // অ্যারের আকার বের করা
    println!("The length of the array is: {}", numbers.len());
}

এখানে numbers অ্যারে ৫টি ইন্টিজার ধারণ করে। অ্যারের উপাদানগুলির ধরন একটাই এবং অ্যারের আকারও নির্দিষ্ট, যা পরিবর্তন করা যায় না।

অ্যারের বৈশিষ্ট্য:

  • স্থির আকার: অ্যারের আকার শুরুতেই নির্ধারিত হয় এবং পরে সেটি পরিবর্তন করা যায় না।
  • অ্যারের উপাদান অ্যাক্সেস: অ্যারের উপাদানগুলি নির্দিষ্ট ইনডেক্সের মাধ্যমে অ্যাক্সেস করা হয় (যেমন numbers[0]).
  • নির্দিষ্ট টাইপ: অ্যারের সব উপাদানের টাইপ একই হতে হবে।

Vectors (ভেক্টর)

রাস্টে vectors হল একটি ডায়নামিক ডেটা স্ট্রাকচার, যা resizable array হিসেবে কাজ করে। ভেক্টর ডেটা সংরক্ষণের জন্য অ্যারে থেকেও বেশি নমনীয় এবং এর আকার রানটাইমে পরিবর্তন করা যায়। ভেক্টরের উপাদানগুলিও একই ধরনের হতে হবে।

ভেক্টরের মৌলিক গঠন:

  • ডায়নামিক আকার (Dynamic-size): ভেক্টরের আকার সময়ের সাথে সাথে পরিবর্তন করা যায়।
  • ডেটা টাইপ: ভেক্টরের সব উপাদান একই ধরনের হতে হবে।
  • উপরি স্তুপ (Heap allocation): ভেক্টর মেমোরি heap এ সংরক্ষিত হয়, যা অ্যারে থেকে আলাদা।

ভেক্টরের উদাহরণ:

fn main() {
    let mut numbers = vec![1, 2, 3];  // একটি ভেক্টর তৈরি করা

    // ভেক্টরের একটি উপাদান অ্যাক্সেস করা
    println!("The first number is: {}", numbers[0]);

    // ভেক্টরে নতুন উপাদান যোগ করা
    numbers.push(4);
    println!("After adding an element, the vector is: {:?}", numbers);

    // ভেক্টরের আকার বের করা
    println!("The length of the vector is: {}", numbers.len());
}

এখানে numbers একটি ভেক্টর যা প্রথমে তিনটি উপাদান ধারণ করে, এবং push ফাংশনের মাধ্যমে একটি নতুন উপাদান যোগ করা হয়।

ভেক্টরের বৈশিষ্ট্য:

  • ডায়নামিক আকার: ভেক্টরের আকার রানটাইমে পরিবর্তিত হতে পারে।
  • উপরি স্তুপে মেমোরি বরাদ্দ: ভেক্টরের ডেটা heap মেমোরিতে সঞ্চিত থাকে, যা অ্যারের তুলনায় বেশি নমনীয়।
  • অ্যারে থেকে বেশি নমনীয়: ভেক্টরে নতুন উপাদান যোগ বা বিদায় করা সম্ভব।

Vectors এবং Arrays এর মধ্যে পার্থক্য

বৈশিষ্ট্যঅ্যারে (Array)ভেক্টর (Vector)
আকারস্থির আকার (Fixed-size)ডায়নামিক আকার (Resizable)
মেমোরি বরাদ্দস্ট্যাক (Stack)heap (Heap)
ধরনসব উপাদান একই টাইপ এবং স্থির আকারসব উপাদান একই টাইপ, তবে আকার পরিবর্তনশীল
ধরা হয় কিভাবেনির্দিষ্ট ইনডেক্স দিয়েইনডেক্স বা অন্যান্য ফাংশন দিয়ে
উপাদান যোগ/হটানোসম্ভব নয় (ফিক্সড আকার)সম্ভব (push, pop, insert)
পারফরম্যান্সবেশি (ফিক্সড আকারের জন্য)কম (dynamic resizing এর জন্য)

Vectors এবং Arrays এর ব্যবহার

অ্যারে ব্যবহার:

অ্যারেগুলি তখন ব্যবহার করা হয় যখন:

  • ফিক্সড আকার প্রয়োজন: যখন উপাদানগুলির সংখ্যা জানি এবং তা পরিবর্তন হবে না।
  • কম্পিউটার সিস্টেমে যেখানে স্ট্যাটিক মেমোরি ম্যানেজমেন্ট গুরুত্বপূর্ণ।

উদাহরণ:

fn main() {
    let days = ["Monday", "Tuesday", "Wednesday"];
    println!("The first day is: {}", days[0]);
}

ভেক্টর ব্যবহার:

ভেক্টর তখন ব্যবহার করা হয় যখন:

  • ডায়নামিক আকার প্রয়োজন: যখন আপনি জানেন না যে কতগুলি উপাদান সংগ্রহ করতে হবে এবং কোড চলাকালীন সংখ্যাটি পরিবর্তিত হতে পারে।
  • একাধিক উপাদান যোগ বা মুছে ফেলা প্রয়োজন

উদাহরণ:

fn main() {
    let mut numbers = vec![10, 20, 30];
    numbers.push(40);  // নতুন উপাদান যোগ করা
    numbers.push(50);  // আরও একটি উপাদান যোগ করা
    println!("The vector is: {:?}", numbers);
}

সারাংশ

রাস্টে arrays এবং vectors দুটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার। অ্যারে ফিক্সড আকারের স্ট্যাটিক ডেটা সংগ্রহ করার জন্য ব্যবহৃত হয়, যেখানে ভেক্টর ডায়নামিক ডেটা সংগ্রহের জন্য ব্যবহৃত হয় এবং তার আকার পরিবর্তনশীল। অ্যারে স্ট্যাক মেমোরিতে সঞ্চিত হয়, কিন্তু ভেক্টর heap মেমোরিতে সঞ্চিত থাকে এবং এটি অতিরিক্ত নমনীয়তার সুবিধা দেয়।

Content added By
Promotion

Are you sure to start over?

Loading...