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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- std::array ขนาดคงที่
- พื้นฐาน std::span
- การส่ง Span ให้ฟังก์ชัน
- ขอบเขตและซับสแปน