سؤال

هل تعرف أي طريقة سهلة أو بسيطة لجعل كائن الخريطة (من مكتبة STL) ثابتًا (على سبيل المثال؟اكتبه في ملف) حتى تتمكن من استعادة حالته لاحقًا عند تشغيل البرنامج لاحقًا ؟؟

شكرا لمساعدتك

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

المحلول

أعتقد أن تعزيز التسلسل المكتبة قادرة على إجراء تسلسل std::map، لكن المكتبة القياسية نفسها لا توفر أي وسيلة.التسلسل عبارة عن مكتبة رائعة تحتوي على الكثير من الميزات وسهلة الاستخدام وتمتد إلى الأنواع الخاصة بك.

نصائح أخرى

إذا كنت تريد القيام بذلك يدويًا، بنفس الطريقة التي تستخدم بها أي بنية حاوية أخرى، فاكتب الأجزاء الفردية على القرص:

outputFile.Write(thisMap.size());
for (map<...>::const_iterator i = thisMap.begin(); i != thisMap.end(); ++iMap)
{
    outputFile.Write(i->first);
    outputFile.Write(i->second);
}

ثم قراءتها مرة أخرى في:

size_t mapSize = inputFile.Read();
for (size_t i = 0; i < mapSize; ++i)
{
    keyType key = inputFile.Read();
    valueType value = inputFile.Read();
    thisMap[key] = value;
}

من الواضح أنك ستحتاج إلى جعل الأمور تعمل بناءً على نوع الخريطة ومكتبة إدخال/إخراج الملفات.

وإلا حاول تعزيز التسلسل, ، أو مكتبة التسلسل الجديدة من جوجل.

الجواب هو التسلسل.تعتمد التفاصيل على احتياجاتك وبيئتك.بالنسبة للمبتدئين، تحقق من مكتبة Boost Serialization: http://www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html

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