Ungkapan Malar dan std::string: A Journey to C 20
Asalnya, soalan itu menimbulkan dilema dalam menggunakan std::string dalam ungkapan berterusan, menganggapnya mustahil disebabkan oleh pemusnah yang tidak remeh. Walau bagaimanapun, landskap telah berkembang dengan pengenalan C 20.
Dalam C 20, std::string memang boleh digunakan dalam ungkapan malar, dengan syarat ia dimusnahkan pada akhir penilaian berterusan. Ini membenarkan ungkapan seperti:
constexpr std::size_t n = std::string("hello, world").size();
Ini kerana objek std::string sementara yang dicipta dalam ungkapan dimusnahkan sebelum penilaian ungkapan berterusan selesai.
Walau bagaimanapun, alternatif dan banyak lagi pendekatan teguh untuk C 17 dan kemudiannya ialah menggunakan std::string_view, yang direka secara eksplisit untuk digunakan dalam pemalar ungkapan:
constexpr std::string_view sv = "hello, world";
std::string_view ialah objek seperti rentetan yang menyediakan rujukan tidak boleh ubah dan bukan milik kepada jujukan aksara. Ia menawarkan kefungsian std::string tanpa menanggung overhed untuk memiliki data asas.
Ringkasnya, manakala std::string boleh digunakan dalam ungkapan tetap dengan kelonggaran sekatan C 20, std:: string_view kekal sebagai pilihan pilihan untuk pengendalian ekspresi berterusan dalam C 17 dan seterusnya, memastikan kebolehubahan dan kecekapan ingatan.
Atas ialah kandungan terperinci Bolehkah std::string Digunakan dalam Ungkapan Malar dalam C 20 dan Seterusnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!