อาเรย์ที่ใช้โดยปกติแล้วจะเป็นแบบมิติเดียว คือตารางจะเป็นแบบแนวยาวออกมา และเพิ่มได้เฉพาะแถว แต่หากเป็นอาเรย์ที่มีหลายมิติ จะเพิ่มข้อมูลที่นำมาลงตารางได้ทั้งแถว และคอลั่ม
อาเรย์ 2 มิติ
อาเรย์ 2 มิติ เป็นอาเรย์ที่จะใช้ลำดับในการอ้างอิง 2 ตัว โดยที่ตัวหนึ่งเป็นตัวหลัก เปรียบได้กับเป็นแถวในตาราง และอีกตัวเป็นคอลั่ม ดังนั้นหากเราต้องการที่จะดึงข้อมูลออกมาจากอาเรย์ เราจะต้องรู้ว่าข้อมูลนั้นๆอยู่แถวที่เท่าไหร่ และอยู่คอลั่มที่เท่าไหร่
ตัวอย่างเช่น การเปรียบเทียบราคาของซีพียูอินเทลรุ่นหนึ่งในแต่ละร้าน และแต่ละปี จะนำข้อมูลมาเขียนเป็นตารางง่ายๆดังนี้
ปี / ชื่อร้าน | ร้านนาย ก. | ร้านนาย ข. | ร้านนาย ค. | ร้านนาย ง. |
2012 | 3,100 | 2,990 | 3,120 | 3,000 |
2013 | 3,000 | 2,900 | 3,000 | 3,100 |
2014 | 2,900 | 2,910 | 3,000 | 3,000 |
2015 | 2,000 | 2,000 | 2,000 | 2,000 |
จากตาราง จะเห็นว่าอาเรย์มิติเดียวไม่สามารถเก็บข้อมูลที่มีจำนวนมากได้ จึงจำเป็นต้องใช้อาเรย์แบบ 2 มิติ ในเก็บข้อมูล ซึ่งข้อมูลจะถูกนำไปเก็บในอาเรย์ได้ จะป็นดังนี้
int price[4][5] = {
{2012, 3100, 2990, 3120, 3000},
{2013, 3000, 2900, 3000, 3100},
{2014, 2900, 2910, 3000, 3000},
{2015, 2000, 2000, 2000, 2000}
};
{2012, 3100, 2990, 3120, 3000},
{2013, 3000, 2900, 3000, 3100},
{2014, 2900, 2910, 3000, 3000},
{2015, 2000, 2000, 2000, 2000}
};
จะเห็นว่าการประกาศตัวแปรเริ่มต้น ยังเป็นรูปแบบ TYPE NAME[SIZE] อยู่ แต่มีการเพิ่มมิติเพิ่มขึ้นมา ทำให้ได้ออกมาเป็น TYPE NAME[SIZE1][SIZE2] แล้วจึงกำหนดค่า
จากโค้ดจะเห็นว่าผมได้กำหนขนาดของมิติแรกเป็น 4 เพราะในตารางมีข้อมูลทั้งหมด 4 ปีด้วยกัน คือปี 2012 2013 2014 และ 2015 ในมิติที่ 2 ได้กำหนดไว้ว่าจะมีข้อมูลย่อยอีก 5 ตัว ในรูปแบบของ ปี, ราคาร้านนาย ก., ราคาร้านนาย ข., ราคาร้านนาย ค., ราคาร้านนาย ง. เมื่อนำโค้ดด้านบนมาใส่ลงในตาราง จะได้เป็น
price | price[x][0] | price[x][1] | price[x][2] | price[x][3] | price[x][4] |
price[0][y] | 2012 | 3,100 | 2,990 | 3,120 | 3,000 |
price[1][y] | 2013 | 3,000 | 2,900 | 3,000 | 3,100 |
price[2][y] | 2014 | 2,900 | 2,910 | 3,000 | 3,000 |
price[3][y] | 2015 | 2,000 | 2,000 | 2,000 | 2,000 |
จะเห็นว่าตารางแรกจะแตกต่างจากตารางนี้ เพราะว่าเราไม่สามารถนำปี มาใช้เป็น Key ที่ใช้กำหนดลำดับของอาเรย์ได้ จึงต้องนำปีไปรวมกับข้อมูลของร้านนั้นๆ
การอ่านข้อมูลอาเรย์ 2 มิติ
จากที่ได้กล่าวไปข้างต้นนั้น เราจำเป็นที่จะต้องรู้ลำดับ หรือ Key ของอาเรย์เสียก่อน จึงจะสามารถนำค่าออกมาได้ ตัวอย่างหากผมต้องการดึงว่าตอนปี 2014 ของร้านนาย ค. ได้ขายซีพียูในราคาเท่าไหร่ ซึ่งหากเราพิจารณาจากตาราง จะพบว่าเราจะต้องดึงออกมาจากลำดับที่ 2,3 เพราะในปี 2014 มีข้อมูลอยู่ลำดับ หรือ Key ที่ 2 แล้วร้านนาย ค. อยู่ลำดับ หรือ Key ที่ 3 ดังนั้นหากจะดึงข้อมูลออกมา ก็สามารถทำได้ง่ายๆ ดังนี้
int val = price[2][3];
จากโค้ดจะเห็นว่าได้มีการดึงข้อมูลจากอาเรย์ในมิติแรกลำดับที่ 2 และในมิติที่สอง ลำดับที่ 3 แล้วจึงนำค่าที่ได้มาเก็บไว้ในตัวแปรชนิด int ชื่อตัวแปร val
การเซ็ตตัวแปรอาเรย์ 2 มิติ
การเซ็ตตัวแปรอาเรย์ 2 มิติ จะคล้ายๆกับการเซ็ตค่าของตัวแปรปกติ เพียงแต่จะต้องระบุลำดับของข้อมูลที่ต้องการแก้ไขในแต่ละมิติด้วย
price[2][3] = 2900;
อาเรย์หลายมิติ
อาเรย์แบบหลายมิติจะใช้เมื่อมีกลุ่มข้อมูลชนิดเดียวกันจำนวนมาก และใช้แค่ 2 มิติยังไม่พอ หากยังนึกภาพไม่ออกว่าอาเรย์หลายมิติมีรูปแบบอย่างไร ก็ให้นึกถึงกระดาษที่มีข้อมูลคล้ายๆกับอยู่วางซ้อนทับกันอยู่ ที่การจะนำข้อมูลจำนวนมากไปวางลงในกระดาษแผ่นเดียวนั้นไม่พอ จึงต้องมีการใช้กระดาษหลายแผ่น เมื่อนำมาวางซ้อนกัน จะทำให้เห็นภาพว่ามิติที่ 3 คืออะไร
* วิทยาศาสตร์อธิบายไว้ง่ายๆว่า หากเราระบุข้อมูลของอะไรก็ตามได้ 1 ตัว นั่นหมายถึงสิ่งนั้นมี 1 มิติ หากระบุได้ด้วย 2 ตัวเลข เช่นรูปสี่เหลี่ยม จะเป็น 2 มิติ แต่หากเป็นรูปทรงลูกบาศก์ ซึ่งจะเป็น 3 มิติ เนื่องจากระบุรายละเอียดได้ด้วย 3 ตัวเลข
การประกาศเป็นตัวแปรอาเรย์หลายมิติ จะเหมือนกับรูป 2 มิติ คือใช้เครื่องหมาย [] ในการระบุขนาดของมิติที่ 3 เพิ่มขึ้นมา เช่น
int price[10][2][2];
ส่วนการเรียกใช้ก็เช่นเดียวกัน คือ
int val = price[0][0][0];
ไม่มีความคิดเห็น:
แสดงความคิดเห็น