อาเรย์
อาเรย์เป็นตัวแปรประเภทหนึ่งในภาษา C++ มันสามารถเก็บข้อมูลที่เป็นชุดไว้ในตัวแปรเดียวโดยการใช้ index เพื่อเป็นตัวชี้ของตำแหน่งข้อมูล ดังนั้นอาเรย์จึงเป็นตัวแปรประเภทหนึ่ง และมีรูปแบบคือ:
type name[size];
ลองจินตนาการว่าถ้าคุณมีข้อมูลเป็นจำนวนมากและเป็นข้อมูลประเภทเดียวกัน การใช้อาเรย์เป็นวิธีที่ง่ายที่จะจัดการกับข้อมูลเหล่านี้
int n1 = 10;
int n2 = 50;
int n3 = 10;
int n4 = 30;
int n5 = 20;
ในตัวอย่างด้านบน เรามีตัวแปร 5 ตัว และแต่ละตัวมีประเภทเป็น int เราสามารถใช้แค่ตัวแปรอาเรย์ตัวเดียวเพื่อที่จะเก็บข้อมูลเหล่านี้
int n[5] = {10, 50, 10, 30, 20};
การประกาศอาเรย์
การประกาศอาเรย์เป็นขั้นตอนแรกที่ต้องทำ เมื่อคุณต้องการใช้อาเรย์ในการจัดการกับข้อมูล
int foo[3];
float x[10];
ในตัวอย่าง เราได้ประกาศตัวแปรอาเรย์ 2 ตัวแปรคือ foo
และ x
เหมือนเราประกาศตัวแปรทั่วไป แต่อาเรย์จะต้องระบุขนาดสูงสุดของมันที่เราจะใช้ และเราสามารถประกาศอาเรย์และกำหนดค่าให้มันในทันนี้
int myNumber[2] = {5, 100};
float money[5] = {10.5, 10.9, 1.5, 4.4, 3.1};
หรือเราสามารถกำหนดค่าให้อาเรย์หลังจากที่เราได้ประกาศมันเสร็จสิ้นแล้ว โดยการใช้ index เพื่อเข้าถึงตำแหน่งของข้อมูลในอาเรย์ คุณจะต้องเข้าใจว่าตำแหน่งของอาเรย์นั้นเริ่มต้นจาก 0 และจะสิ้นสุดที่ size-1 ยกตัวอย่างเช่น ถ้าอาเรย์มีขนาดเป็น 10 index ของมันคือ 0 - 9
int n[10];
n[0] = 1;
n[1] = 2;
n[5] = 5;
n[11] = 5; // error because an index out of bound
เราสามารถใช้แค่บาง index ได้ถ้าเราต้องการ แต่โดยปกติแล้ว มันไม่มีเหตุผลอะไรที่เราจะละเว้นบางตำแหน่ง
การสร้างอาเรย์โดยการใช้คำสั่ง for loop
อาเรย์นั้นทำงานได้ดีกับลูป การใช้ for loop เป็นวิธีที่ง่ายที่เราจะใช้กับอาเรย์ ถ้าบางครั้ง ถ้าเราต้องการสร้างอาเรย์กับข้อมูล 5, 10, 15, 20, ... , 100 แล้วเราจะทำได้อย่างไร แน่นอน เราจะใช้ for loop มาช่วย
#include <iostream>
using namespace std;
int main()
{
int myNumber[20];
for (int i = 0; i < 20; i++)
{
myNumber[i] = (i+1) * 5;
}
return 0;
}
ในตัวอย่าง เราต้องรู้ขนาดที่แน่นอนของอาเรย์และในตอนแรกเราจะสร้างอาเรย์ หลังจากนั้นเราใช้ for loop เพื่อวนซ้ำ 20 ครั้ง เพื่อกำหนดค่าให้ในอาเรย์แต่ละตำแหน่ง ซึ่งมันมีผลเหมือนกันกับที่เราทำแบบนี้
int myNumber[20] = {5, 10, 15, 20, 25, 30, 35, .. , 100};
Accessing the values of an array
อาเรย์เป็นข้อมูลแบบลำดับที่เก็บข้อมูลในหนึ่งตัวแปร มันมี index ที่สามารถระบบตำแหน่งของแต่ละค่าในหน่วยความจำ ดังนั้น อาเรย์สามารถเข้าถึงได้โดยตรงผ่านทาง index อย่างไรก็ตาม การใช้ for loop เพื่อวนซ้ำและเข้าถึงข้อมูลในอาเรย์นั่นเป็นวิธีที่ง่ายที่สุดที่เราชอบทำ มาดูตัวอย่างของการอ่านข้อมูลจากอาเรย์ for loop
#include <iostream>
using namespace std;
int main()
{
int number[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++)
{
cout << "number[" << i << "] = " << number[i] << endl;
}
return 0;
}
Output
number[0] = 1
number[1] = 2
number[2] = 3
number[3] = 4
number[4] = 5
ในตัวอย่างนี้ จะแสดงวิธีอ่านข้อมูลในอาเรย์โดยการใช้ for loop และเราใช้ตัวแปร i
เป็น index ของอาเรย์ คุณสามารถนำตัวอย่างนี้ไปประยุกต์ใช้ต่อได้ตามที่คุณต้องการ เช่น การแสดงอาเรย์จากตำแหน่งสุดท้ายมายังตำแหน่งแรก นี่เป็นวิธี
#include <iostream>
using namespace std;
int main()
{
string countries[5] = {"US", "CH", "UK", "GR", "JP"};
for (int i = 4; i >= 0; i--)
{
cout << "countries[" << i << "] = " << countries[i] << endl;
}
return 0;
}
Output
countries[4] = JP
countries[3] = GR
countries[2] = UK
countries[1] = CH
countries[0] = US
แทนที่จะแสดงข้อมูลจากอันแรกไปยังอันสุดท้ายหรืออ่านไปตามลำดับ ตัวอย่างนี้จะแสดงให้คุณเห็นถึงวิธีการอ่านข้อมูลจากท้ายของอาเรย์ ตั้งแต่เรารู้ว่าขนาดของอาเรย์คือ 5 ดังนั้น index ตัวสุดท้ายจะต้องเป็น 4 เราจึงใช้ for loop ลดค่าของ i
แทนที่จะเพิ่ม
Multidimensional arrays
ที่คุณได้เพิ่งเรียนรู้ไปทั้งหมดนั้นเป็นเพียงแค่พื้นฐานของอาเรย์ และเราเรียกว่า อาเรย์หนึ่งมิติ ต่อไป เราจะเรียนรู้เกี่ยวกับอาเรย์หลายมิติ อาเรย์หลายมิตินั้นเป็นอาเรย์ของอาเรย์ นั่นหมายความว่าเราสามารถมีอาเรย์ในอาเรย์ มาดูตัวอย่างในอาเรย์สองมิติ
int number[3][4];
string location[2][2][2];
ในตัวอย่าง แสดงวิธีให้คุณเห็นวิธีการประกาศอาเรย์สองมิติ บรรทัดแรกคือ อาเรย์สองมิติ และบรรทัดที่สองเป็นอาเรย์สามมิติ แต่ในบทเรียนนี้เราจะพูดถึงแค่อาเรย์สองมิติ เพราะว่าอาเรย์หลายมิตินั้นไม่ค่อยได้ใช้ อย่างไรก็ตาม มันมีแนวคิดเดียวกัน
ต่อไป มาดูตัวอย่างวิธีการประกาศอาเรย์สองมิติ
int number[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
อาเรย์สองมิตินั้นเหมือนตาราง โดยการเข้าถึงแต่ละค่าในอาเรย์ ยกตัวอย่างเช่น 10 เราสามารถเข้าถึงได้โดย number[2][1]
และเราสามารถแสดงรายการของข้อมูลทั้งหมดโดยการใช้ for loop ที่ซ้อนกัน
#include <iostream>
using namespace std;
int main()
{
int m[3][4] =
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
cout << "m[" << i << "][" << j << "] = ";
cout << m[i][j] << endl;
}
}
return 0;
}
ในตัวอย่าง เราใช้ for loop เพื่อแสดงข้อมูลจากอาเรย์ สำหรับอาเรย์สองมิติ เรามีการใช้ for loop ที่ซ้อนกัน for loop ด้านนอกจะใช้รันสำหรับ row และด้านในสำหรับ column m[row][col]
และข้างล่างเป็นผลลัพธ์ของโปรแกรม
m[0][0] = 1
m[0][1] = 2
m[0][2] = 3
m[0][3] = 4
m[1][0] = 5
m[1][1] = 6
m[1][2] = 7
m[1][3] = 8
m[2][0] = 9
m[2][1] = 10
m[2][2] = 11
m[2][3] = 12
ในบทนี้ เราได้ครอบคลุมในอาเรย์พื้นฐานทั้งหนึ่งมิติและสองมิติ