StringPiece class in Chromium's source code के प्रलेखन से:क्या कोई कारण हैं कि स्ट्रिंगपीस/स्ट्रिंगरफ मुहावरे अधिक लोकप्रिय नहीं है?
// A string-like object that points to a sized piece of memory.
//
// Functions or methods may use const StringPiece& parameters to accept either
// a "const char*" or a "string" value that will be implicitly converted to
// a StringPiece.
//
// Systematic usage of StringPiece is encouraged as it will reduce unnecessary
// conversions from "const char*" to "string" and back again.
उपयोग का उदाहरण:
void foo(StringPiece const & str) // Pass by ref. is probably not needed
{
// str has same interface of const std::string
}
int main()
{
string bar("bar");
foo(bar); // OK, no mem. alloc.
// No mem. alloc. either, would be if arg. of "foo" was std::string
foo("baz");
}
इस तरह के एक महत्वपूर्ण और स्पष्ट अनुकूलन की तरह लगता है मैं नहीं समझ सकता है कि क्यों यह और अधिक व्यापक नहीं है, और क्यों स्ट्रिंगपीस के समान एक वर्ग पहले से ही मानक में नहीं है।
क्या इस कारण से मुझे अपने कोड में string
और char*
पैरामीटर के उपयोग को प्रतिस्थापित नहीं करना चाहिए? क्या सी ++ मानक पुस्तकालयों में पहले से ही ऐसा कुछ है?
अद्यतन। मैंने सीखा है कि एलएलवीएम का स्रोत इसी तरह की अवधारणा का उपयोग करता है: StringRef कक्षा।
मुझे इसे सैद्धांतिक विचार के रूप में पसंद है। मुझे आश्चर्य है कि यह "प्रशिक्षण" के बिना अभ्यास में कितना भ्रमित होगा। – jmucchiello
पुरानी पोस्ट, लेकिन भविष्य के पाठकों के लिए यह ध्यान रखना चाहिए कि यह प्रस्तावित किया गया है: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3442.html –