سؤال

مرات كثيرة أجد نفسي الحاجة إلى تحديد وعاء على بيانات متعددة الأبعاد.

دعونا نأخذ مثالا على ذلك:لدي العديد من رقائق البطاطس كل شريحة العديد من سجلات كل سجل له العديد من الخلايا, و كل خلية لديها العديد من الترانزستورات.

في مرحلة من C++ برنامج يجب أن قراءة هذه البيانات في وقت لاحق يجب أن استخدامه.

لا يمكنني استخدام أي خارجي لتخزين هذه البيانات:ملف قاعدة البيانات ، إلخ.

لذا يجب إنشاء بعض متعدد الأبعاد الخاصة بلبنان الحاوية ؟ خريطة من خرائط ناقلات, أو شيء من هذا القبيل...?

أو علي إنشاء فصول (البنيات) لكل منهم ؟ خلايا الطبقة التي تحتوي على ناقل الترانزستورات, ثم سجل الطبقة التي تحتوي على ناقل من الخلايا ، وما إلى ذلك ؟ ولكن ماذا لو كان في وقت لاحق أريد أن الوصول إلى البيانات من قبل الترانزستور ، وليس عن طريق الشريحة ؟

أي طريقة أخرى ؟

شكرا لك

تحرير:نسيت أن أذكر:أنا لا يمكن استخدام دفعة.

هل كانت مفيدة؟

المحلول

تنفيذ فصول كاملة لهم.التعليمات البرمجية الخاصة بك وسوف تكون أكثر نظافة في نهاية المطاف.

كلما كنت تجاهل هذه البديهية ، فإنه يعود إلى تطارد لي.لقد نفذت الهرمي 3 مستويات سلسلة مجموعة في الشروط من الأمراض المنقولة جنسيا::أزواج من الأمراض المنقولة جنسيا::سلاسل الأمراض المنقولة جنسيا:أزواج.كانت سريعة و بسيطة, و عندما اضطررت إلى استبدال طبقة واحدة ثم أخرى مع الطبقة تحتوي على سمات إضافية ، كان من المدهش أن من السهل القيام به.لكن في النهاية كان رمز حالة من الفوضى و أنا لم أكن سعيدة توثيقه.تعلمت الدرس مرة أخرى ومرة أخرى ومرة أخرى...

نصائح أخرى

وتحتاج إلى تعيين نطاقك.

<اقتباس فقرة>   

وهكذا، يجب أن تخلق بعض الحاويات STL متعددة الأبعاد؟ خريطة من خرائط ناقلات، أو شيء من هذا القبيل ...؟

وسيحتوي كل ناقلات / خريطة كائنات من نوع ما. هذا يقودنا إلى السؤال التالي الخاص بك:)

<اقتباس فقرة>   

وأو ينبغي أن إنشاء فصول (البنيات) لكل منهم؟

ويبدو أن هذا هو ما تحتاج على أقل تقدير.

<اقتباس فقرة>   

والطبقة الخلية التي تحتوي على ناقل من الترانزستورات، ثم فئة التسجيل التي تحتوي على ناقل الخلايا، وما إلى ذلك؟

ونظرة على حد سواء has-a وis-implemented-in-terms-of التصاميم.

<اقتباس فقرة>   

ولكن ماذا لو كان في وقت لاحق أريد أن فرز البيانات الخاصة بي التي كتبها الترانزستور، وليس عن طريق رقاقة؟

ما هي البيانات؟ يمكنك تمرير دائما حول المقارنة تبعا للسياق. أيضا، واسأل نفسك إذا كنت حقا بحاجة الى فضح تفاصيل مستوى Transistor لشخص يعمل مع Chip. التي سوف تساعد على بدء.

إذا كنت ترغب في الوصول إلى البيانات الخاصة بك على طول مختلفة "الأبعاد"، قد تكون مهتمة في <لأ href = "http://www.boost.org/doc/libs/1_38_0/libs/multi_index/doc/index. أتش تي أم أل "يختلط =" نوفولو noreferrer "> boost::multi_index_container . أنا لم تستخدم ذلك بنفسي، ولكن يبدو أنه يناسب مشروع القانون.

وكما نصح، اخترت لتنفيذ فصول كاملة:

class Chip
{
    map<RegisterLocation, Register> RegistersPerLocation;
  public:
    void AddRegisterPerLocation(RegisterLocation, Register); 

};

class Register
{
    map<CellLocation, Cell> CellsPerLocation;
  public:
    void AddCellPerLocation(CellLocation, Cell); 
};

// etc..
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top