এই সমস্যায়, আমরা 2-ডি অ্যারেকে 1-ডি অ্যারেতে রূপান্তর বুঝতে পারব। আমরা দেখব কিভাবে 2-ডি অ্যারের উপাদানগুলিকে 1-ডি অ্যারেতে সংরক্ষণ করা যায়।
এখানে, 1-ডি অ্যারের আকার 2-ডি অ্যারের মোট উপাদানের সংখ্যার সমান যা n*m।
প্রোগ্রামিংয়ে 2-ডি অ্যারে থেকে 1-ডি অ্যারে সংরক্ষণ করার দুটি উপায় রয়েছে। তারা হল-
- রো মেজর
- কলাম মেজর
সারি মেজর: সারি মেজরে, একটি সারির সমস্ত উপাদান একসাথে সংরক্ষণ করা হয় তারপর এটি পরবর্তী সারিতে চলে যায়।
nXm আকারের 2-D অ্যারের একটি উপাদানের একটি সূচক (i, j) 1-D অ্যারেতে সংরক্ষণ করা হলে, 1-D অ্যারেতে এর সূচকটি হল
(j) + (i)*m
কলাম প্রধান: প্রধান কলামে, একটি কলামের সমস্ত উপাদান একসাথে সংরক্ষণ করা হয় তারপর পরবর্তী কলামটি অতিক্রম করা হয়।
nXm আকারের 2-D অ্যারের একটি উপাদানের একটি সূচক (i, j) 1-D অ্যারেতে সংরক্ষণ করা হলে, 1-D অ্যারেতে এর সূচকটি হল
(i) + (j)*n
সমস্যা বোঝার জন্য একটি উদাহরণ দেখি,
ইনপুট: n =3, m =5, (i,j) =(0, 2)
আউটপুট: row-major =
column-major =
ব্যাখ্যা:
রো-মেজর =2 + 0*3 =3
Col-major =0 + 2*5 =10
2-D থেকে 1-D রূপান্তর চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#include<iostream>
using namespace std;
int main() {
int n = 3;
int m = 5;
int grid[n][m] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
{10, 11, 12},
{13, 14, 15}};
int i = 0;
int j = 2;
int rowMajorIndex = i*n + j;
cout<<"Index of element at index (0, 2) in 1-D array using row-major is "<<rowMajorIndex<<endl;
int colMajorIndex = i + j*m;
cout<<"Index of element at index (0, 2) in 1-D array using column-major is "<<colMajorIndex<<endl;
return 0;
} আউটপুট −
Index of element at index (0, 2) in 1-D array using row-major is 2 Index of element at index (0, 2) in 1-D array using column-major is 10