Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

อาร์เรย์ที่แตกต่างกันในโครงสร้างข้อมูล


อย่างที่เราทราบดีว่าอาร์เรย์มีความเป็นเนื้อเดียวกันตามคำจำกัดความ ดังนั้นเราต้องใส่ข้อมูลประเภทเดียวกันในอาร์เรย์ แต่ถ้าเราต้องการเก็บข้อมูลประเภทต่าง ๆ จะมีเคล็ดลับอย่างไร? ในภาษาซี เช่นเดียวกับภาษาโบราณ เราสามารถใช้สหภาพแรงงานเพื่อรวมประเภทต่าง ๆ เข้าเป็นประเภทเดียว จากนั้นเราสามารถกำหนดอาร์เรย์ในประเภทใหม่นี้ได้ ประเภทของวัตถุที่องค์ประกอบอาร์เรย์มีอยู่จริงจะถูกกำหนดโดยแท็ก ให้เราดูโครงสร้างแบบนี้ -

struct Vehicle{
   int id;
   union {
      Bus b;
      Bike c;
      Car d;
   }
};

จากนั้นโปรแกรมเมอร์จะต้องสร้างข้อตกลงเกี่ยวกับวิธีการใช้แท็ก ID ตัวอย่างเช่น สมมติว่าเมื่อรหัสเป็น 0 หมายความว่ายานพาหนะที่แสดงเป็นรถโดยสาร เป็นต้น สหภาพจะจัดสรรหน่วยความจำสำหรับประเภทที่ใหญ่ที่สุดระหว่างรถประจำทาง จักรยาน และรถยนต์ สิ่งนี้จะเปลืองหน่วยความจำหากมีความแตกต่างอย่างมากระหว่างขนาดของวัตถุ

ในภาษาเชิงวัตถุ เราสามารถใช้แนวคิดเรื่องการสืบทอดได้ สมมติว่าเรามีคลาสที่เรียกว่า Vehicle และประเภทอื่นๆ เช่น Bus, Bike และ Car เป็นคลาสย่อยของคลาสนั้น ดังนั้น หากเรากำหนดอาร์เรย์สำหรับยานพาหนะ อาร์เรย์นั้นก็สามารถเก็บคลาสย่อยทั้งหมดได้ ซึ่งจะช่วยให้เราจัดเก็บข้อมูลหลายประเภทไว้ในอาร์เรย์เดียว