0Pricing
C++ Academy · บทเรียน

std::array ขนาดคงที่

สิ่งทดแทน C-array ที่ปลอดภัย

std::array ขนาดคงที่ เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

อาร์เรย์ C ที่ปลอดภัย

std::array<T, N> เป็นอาร์เรย์ขนาดคงที่ที่ทราบขนาดของตนเองและทำงานเหมือนคอนเทนเนอร์ที่เหมาะสม โปรด include <array>

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {1, 2, 3};
    std::cout << a[0] << " " << a.size() << "\n";
}

รู้ขนาดของตนเอง

ต่างจากอาร์เรย์ดิบที่แปรสภาพเป็นพอยน์เตอร์ std::array จะรายงานความยาวผ่าน size() ได้เสมอ

#include <iostream>
#include <array>
int main() {
    std::array<double, 4> a{};
    std::cout << a.size() << "\n"; // 4
}

ลูป for แบบอิงช่วง

เนื่องจากเป็นคอนเทนเนอร์อย่างสมบูรณ์ คุณจึงวนซ้ำด้วยลูป for แบบอิงช่วงได้

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {10, 20, 30};
    for (int x : a) std::cout << x << " ";
    std::cout << "\n";
}

at() ที่ตรวจสอบขอบเขต

at(i) จะโยนข้อผิดพลาด std::out_of_range เมื่อดัชนีไม่ถูกต้อง ขณะที่ operator[] ไม่ตรวจสอบ ดังนั้นควรเลือกใช้ตามระดับความปลอดภัยที่ต้องการ

#include <iostream>
#include <array>
int main() {
    std::array<int, 2> a = {1, 2};
    try { a.at(5); }
    catch (const std::out_of_range&) { std::cout << "out of range\n"; }
}

front, back และ data

ฟังก์ชันเข้าถึงที่ช่วยให้ใช้งานสะดวก: front() และ back() คืนค่าองค์ประกอบแรกและองค์ประกอบสุดท้าย ส่วน data() ให้พอยน์เตอร์ดิบสำหรับใช้กับ API ของ C

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {7, 8, 9};
    std::cout << a.front() << " " << a.back() << "\n";
}

คัดลอกตามค่าได้

std::array คัดลอกด้วย = ได้อย่างราบรื่น โดยคัดลอกทุกองค์ประกอบ ต่างจากอาร์เรย์ดิบที่แปรสภาพเป็นพอยน์เตอร์

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {1, 2, 3};
    std::array<int, 3> b = a; // full copy
    b[0] = 99;
    std::cout << a[0] << " " << b[0] << "\n"; // 1 99
}

ทำงานร่วมกับอัลกอริทึมได้

อัลกอริทึมมาตรฐานยอมรับตัววนซ้ำของ std::array ได้ ในตัวอย่างนี้เราจะเรียงลำดับอาร์เรย์

#include <iostream>
#include <array>
#include <algorithm>
int main() {
    std::array<int, 4> a = {4, 1, 3, 2};
    std::sort(a.begin(), a.end());
    for (int x : a) std::cout << x << " ";
    std::cout << "\n";
}

เติมค่าและเปรียบเทียบ

fill(value) กำหนดค่าให้ทุกองค์ประกอบ และ std::array ยังรองรับการเปรียบเทียบด้วย == แบบเปรียบเทียบทีละองค์ประกอบ

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a{};
    a.fill(5);
    std::array<int, 3> b = {5, 5, 5};
    std::cout << (a == b) << "\n"; // 1
}

ขนาดเป็นส่วนหนึ่งของชนิดข้อมูล

ความยาว N ถูกกำหนดไว้ในชนิดข้อมูล ดังนั้นฟังก์ชันที่รับ std::array<int,3> จะไม่ยอมรับอาร์เรย์ขนาด 4 จุดนี้เองที่ std::span จะช่วยได้ในภายหลัง

การจัดสรรบนสแตก

std::array จัดเก็บองค์ประกอบไว้ภายในตัวเอง (โดยทั่วไปอยู่บนสแตก) โดยไม่ต้องจัดสรรหน่วยความจำบนฮีป จึงทำงานได้รวดเร็วและคาดเดาได้สำหรับข้อมูลขนาดคงที่

อาร์เรย์กับเวกเตอร์

ใช้ std::array เมื่อทราบขนาดตั้งแต่เวลาคอมไพล์และขนาดนั้นไม่เปลี่ยนแปลง ใช้ std::vector เมื่อขนาดอาจเปลี่ยนแปลงขณะทำงาน

ตรวจสอบความเข้าใจ

ตรวจสอบความเข้าใจเกี่ยวกับ std::array ของคุณ

สรุปทบทวน

คุณได้เรียนรู้เกี่ยวกับ std::array แล้ว:

  • เป็นคอนเทนเนอร์ขนาดคงที่ที่ทราบขนาด และไม่ต้องจัดสรรหน่วยความจำบนฮีป
  • at() ตรวจสอบขอบเขต แต่ [] ไม่ตรวจสอบ
  • คัดลอกได้ เปรียบเทียบได้ และทำงานร่วมกับอัลกอริทึมได้
  • ขนาด N เป็นส่วนหนึ่งของชนิดข้อมูล

คำถามที่พบบ่อย

บทเรียน “std::array ขนาดคงที่” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “std::array ขนาดคงที่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “std::array ขนาดคงที่”

สิ่งทดแทน C-array ที่ปลอดภัย คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “std::array ขนาดคงที่” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม

ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. std::array ขนาดคงที่
  2. พื้นฐาน std::span
  3. การส่ง Span ให้ฟังก์ชัน
  4. ขอบเขตและซับสแปน
← กลับไปที่ C++ Academy