อาเรย์

อาเรย์เป็นตัวแปรประเภทหนึ่งในภาษา 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

ในบทนี้ เราได้ครอบคลุมในอาเรย์พื้นฐานทั้งหนึ่งมิติและสองมิติ