C++17特性 string_view substr只要常數複雜度,且省內存

string_view

string_view 是C++17所提供的用於處理只讀字符串的輕量對象。這裏後綴 view 的意思是隻讀的視圖。

  • 通過調用 string_view 構造器可將字符串轉換爲 string_view 對象。
    string 可隱式轉換爲 string_view。
  • string_view 是隻讀的輕量對象,它對所指向的字符串沒有所有權。
  • string_view通常用於函數參數類型,可用來取代 const char* 和 const string&。
    string_view 代替 const string&,可以避免不必要的內存分配。
  • string_view的成員函數即對外接口與 string 相類似,但只包含讀取字符串內容的部分。
    string_view::substr()的返回值類型是string_view,不產生新的字符串,不會進行內存分配。
    string::substr()的返回值類型是string,產生新的字符串,會進行內存分配。
  • string_view字面量的後綴是 sv。(string字面量的後綴是 s)

頭文件

#include<string_view>
//聲明
string p="xxx";
string_view test test(p);

//或
string_view p("xxx");
string_view p("xxx",2)//取前兩個字符
string_view p="xxx"sv;

//string 類有的api string_view都有

string_view的substr方法是o(k),k爲常數

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章