3、字符串、向量和數據

3.1 命名空間的using聲明

  • 形式:using namespace::name;


3.2 標準庫類型string

  • 表示可變長的字符序列

  • size()的返回值值類型是string::size_type,一個無符號的整數
  • string對象和字符字面值及字符串字面值混在一條語句中使用時,必須確保每個加法運算符兩側對象至少一個時string,如:

    string s6 = s1 + ", " + “world”;//正確

    string s7 = “hello” + “,” +s1; //錯誤

  • <cctype>中定義了函數isalnum()、isdigit()…
  • 對string對象的每個元素做某個操作,如
    for (auto &c : s)    //基於範圍的for語句
       c = toupper(c);   //改成大寫
    
  • 使用下標方式迭代:
    for(decltype(s.size()) index=0;index!=s.size()
       &&!isspace(s[index]); ++index)
       s[index] = toupper(s[index]);
    
  • string 對象上的操作
    • 1.初始化對象的方式
    • 2.所能執行的操作:函數名調用操作、<<、+等運算符操作
      • string s;cin>>s1>>s2;: 會自動忽略開頭的空白(\n \t)
      • while(getline(cin,s));:遇到換行符結束但不會存到s中,返回流參數

3.2 標準庫類型vector

表示對象的集合,也叫容器,是一個類模板

#include <vector>
using std::vector

  • 編譯器根據模板創建類或函數的過程稱爲實例化
  • 初始化如:
    vector<T> v5{a,b,c,d,...}
    vector<T> v5={a,b,c,d,..}  //注意這裏不是圓括號
    

3.4 迭代器

  • 有效的迭代器或者指向某個元素、或者指向容器中尾元素的下一位置。
  • 有迭代器的類型同時擁有返回迭代器的成員,比如都有begin和end成員
    • *iter:返回迭代器所指元素的引用
    • iter->mem:解引用該元素,(*iter).mem
  • 迭代器類型:
    vector<int>::iterator it;  // it能讀寫vector<int>的元素
    string::iterator it;  // it能讀寫string對象中的元素
    vector<int>::const_iterator it;  // it能讀不能寫vector<int>的元素
    string::const_iterator it;  // it能讀不能寫string對象的元素
    

未完

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