คำถามติดแท็ก string-view

5
std :: string_view เร็วกว่า const std :: string & อย่างไร
std::string_viewได้ทำให้มันไปที่ C ++ 17 const std::string&และจะมีการใช้กันอย่างแพร่หลายในการใช้มันแทน เหตุผลหนึ่งคือประสิทธิภาพ ใครสามารถอธิบายได้ว่า std::string_view / จะเร็วกว่าconst std::string&เมื่อใช้เป็นชนิดพารามิเตอร์อย่างไร (สมมติว่าไม่มีสำเนาใน callee)
221 c++  string  c++17  string-view 

1
string_view คืออะไร
string_viewเป็นคุณลักษณะที่เสนอภายใน C ++ Library Fundamentals TS ( N3921 ) เพิ่มใน C ++ 17 เท่าที่ฉันเข้าใจมันเป็นประเภทที่เป็นตัวแทนของสตริง "แนวคิด" บางอย่างที่เป็นมุมมองของภาชนะประเภทใด ๆ ที่สามารถเก็บสิ่งที่ดูได้เป็นสตริง ถูกต้องหรือไม่ ควรเป็นconst std::string&พารามิเตอร์แบบบัญญัติ string_viewหรือไม่ มีประเด็นสำคัญอีกข้อหนึ่งที่string_viewต้องพิจารณาหรือไม่?

1
gotchas ใด ๆ ที่แทนที่ global const char [] ด้วย constexpr string_view?
ทีมงานของเรากำลังทำงานกับรหัสฐาน C ++ อายุมากกว่า 10 ปีและเพิ่งเปลี่ยนเป็นคอมไพเลอร์ C ++ 17 ดังนั้นเรากำลังมองหาวิธีปรับปรุงรหัสของเราให้ทันสมัย ในการพูดคุยประชุมบน YouTube ผมได้ยินข้อเสนอแนะเพื่อแทนที่สตริงระดับโลกที่มีconst char*constexpr string_view เนื่องจากเรามีconst char*ค่าคงที่สตริงทั่วโลกจำนวนมากในรหัสของเราฉันต้องการถามว่ามี gotchas หรือปัญหาที่อาจเกิดขึ้นที่เราต้องระวังหรือไม่?

2
คุณต้องการสตริงที่สิ้นสุดด้วยค่า null ในสถานการณ์แบบอ่านอย่างเดียวเมื่อใด
ฉันได้เล่นกับstd::string_viewห้องสมุดและฉันได้ไตร่ตรองเกี่ยวกับการเปลี่ยนรหัสฐานที่ฉันได้พยายามใช้std::string_viewให้มากที่สุด อย่างไรก็ตามในหลายหัวข้อที่ผมได้อ่านในเรื่องของเวลาและสถานที่ที่จะใช้แทนstd::string_view const std::string &ฉันเห็นคำตอบมากมายว่า "เมื่อคุณไม่ต้องการสตริงที่สิ้นสุดด้วยค่า null" ดังนั้นเมื่อฉันเริ่มค้นหาเว็บ "คุณต้องการสตริงที่สิ้นสุดด้วยค่า null เมื่อใด" ฉันไม่ได้เจอคำตอบที่เป็นประโยชน์ในเรื่องนี้จริงๆ ฉันนึกถึงตัวอย่างของstd::stringไลบรารี่ภายนอกที่คุณจะต้องลิงค์ไปถึง และในกรณีนั้นคุณจะต้องใช้สตริงที่สิ้นสุดด้วยค่า null เนื่องจากไลบรารีนั้นต้องการ ฉันเดาอีกตัวอย่างหนึ่งคือหากคุณต้องการแก้ไขสตริงเอง แต่จากนั้นเราจะไม่ผ่านมันconst &หากเราต้องการแก้ไขมัน ดังนั้นเมื่อใดที่คุณจะต้องใช้สตริงที่สิ้นสุดด้วยค่า Null? ลิงค์ที่ฉันได้ดู: std :: string_view เร็วกว่า const std :: string & อย่างไร เมื่อใดที่ฉันจะส่งผ่าน const & std :: string แทนที่จะเป็น std :: string_view เหตุใดจึงต้องดูสตริง มีความหมายในการใช้ const std :: string & arguments …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.