C++ 17的字符串視圖爲開發人員提供了一種將廉價的非擁有引用傳遞給實際上可以爲faster than const std::string&
的字符串的方法。我可能很幼稚,但這聽起來很像Java的內置機制,可以複製引用的一個對象。像Integer和String這樣的內置包裝器是不可變的。 Java的「引用」機制爲您提供了保證,這些對象在程序的整個生命週期中都會保持相同的值。所不同的是在C++中,string_view
是在程序中明確的,像這樣:爲什麼只有字符串視圖?
void retrieve_an_object (string_view sv) {
}
這是更自我記錄比Java的令人驚訝的(以C++開發人員)技工。但是,對於標準和圖書館編寫者來說,爲C++中的每個可以想到的類編寫一個視圖類肯定是一個巨大的負擔。 C++可能有一種更專注的方式將對象標記爲「僅查看」而無需編寫整個類,如果可以的話,爲什麼從考慮中刪除了這些?
它不是'std :: string'的視圖,而是連續字符序列的視圖。它有大部分'std :: string'接口,因爲它是一致的。 – chris
'const type&'是爲類提供僅查看接口的最快方法。 'string_view'是特殊的,因爲當你*沒有'std :: string'時使用它。 – aschepler