Avatar ·

لماذا قراءة الأسطر من stdin في C++ أبطأ منها في Python؟

مرحبًا بالجميع! أنا مطور C++ مبتدئ، وقد واجهت مشكلة غريبة. كنت أحل مسألة على Codeforces حيث كنت بحاجة لقراءة 10 ملايين عدد صحيح من الإدخال القياسي. كتبت كودًا في C++ باستخدام std::cin و std::getline، لكن البرنامج كان يعمل ببطء شديد — حوالي 30 ثانية. قررت للتحقق كتابة سكريبت مشابه في Python باستخدام input() العادي و sys.stdin.read().split()، وتم تنفيذه في 3-4 ثوانٍ فقط! كيف يكون هذا ممكنًا؟ ففي النهاية، C++ تُعتبر لغة أكثر أداءً. إليك كودي في C++: ```cpp #include #include #include int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::vector numbers; std::string line; while (std::getline(std::cin, line)) { // نوزع الأعداد من السطر size_t pos = 0; while (pos < line.size()) { size_t next = line.find(' ', pos); if (next == std::string::npos) next = line.size();