Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การจำลองอาร์เรย์ 2 มิติโดยใช้อาร์เรย์ 1 มิติใน C++


ในปัญหานี้ เราจะมาทำความเข้าใจเกี่ยวกับการแปลงอาร์เรย์ 2 มิติเป็นอาร์เรย์ 1 มิติ เราจะมาดูวิธีการจัดเก็บองค์ประกอบของอาร์เรย์ 2 มิติไปยังอาร์เรย์ 1 มิติ

ในที่นี้ ขนาดของอาร์เรย์ 1-D จะเท่ากับจำนวนองค์ประกอบทั้งหมดในอาร์เรย์ 2 มิติซึ่งเท่ากับ n*m

ในการเขียนโปรแกรม มีสองวิธีในการจัดเก็บอาร์เรย์ 2 มิติไปยังอาร์เรย์ 1 มิติ พวกเขาคือ−

  • วิชาเอก
  • สาขาวิชาคอลัมน์

วิชาเอก: ในแถวหลัก องค์ประกอบทั้งหมดของแถวจะถูกเก็บไว้ด้วยกันจากนั้นจะย้ายไปที่แถวถัดไป

หากองค์ประกอบของอาร์เรย์ 2 มิติขนาด nXm มีดัชนี (i, j) อยู่ในอาร์เรย์ 1 มิติ ดัชนีของอาร์เรย์ 1 มิติจะเป็น

(j) + (i)*m

สาขาวิชา: ในคอลัมน์หลัก องค์ประกอบทั้งหมดของคอลัมน์จะถูกเก็บไว้ด้วยกัน จากนั้นจึงข้ามคอลัมน์ถัดไป

หากองค์ประกอบของอาร์เรย์ 2 มิติขนาด nXm มีดัชนี (i, j) อยู่ในอาร์เรย์ 1 มิติ ดัชนีของอาร์เรย์ 1 มิติจะเป็น

(i) + (j)*n

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหา

ป้อนข้อมูล: n =3, m =5, (i,j) =(0, 2)

ผลลัพธ์: แถวหลัก =
คอลัมน์หลัก =

คำอธิบาย:

แถวหลัก =2 + 0*3 =3
Col-major =0 + 2*5 =10

โปรแกรมแสดงการแปลงภาพ 2 มิติเป็น 1 มิติ

ตัวอย่าง

#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