筆記:《C++ Primer》第3章

來源:互聯網
上載者:User

標籤:

關鍵字:標準庫類型

1、標準庫string類型中,用getline函數讀取整行文本。它只要遇到分行符號,即使它是輸入的第一個字元,getline也將停止讀入並返回。getline接受兩個參數:一個輸入資料流對象,一個string對象。如下:

int main()

{

    string line;

    while(getline(cin,line))

    {

        cout<<line<<endl;

    }

    return 0;

}

 

2、任何儲存string操作結果的變數必須為string::size_type類型。特別重要的是,不要把size的傳回值賦值給一個int變數。這是因為size_type能儲存的string長度是int所能儲存的兩倍。如下所示:

#include <iostream>

#include <string>

 

using namespace::std;

int main()

{

         string str("Hello World!\n");

         string::size_type n=str.size();

         cout << "The size of "<<endl << str << "is " << n<< endl;

    for(string::size_type ix=0; ix!=str.size(); ++ix)

        str[ix]!=‘*‘;

         cin.get();

         return 0;

}

    vector的情況與之類似,如下:

vector<int> a;

...

vector<int>::size_type n=a.size();

3、當進行string 對象和字串字面值混合串連操作時,+操作符的左右運算元必須至少有一個是string 類型的。如下所示:

string s1="hello";

string s2="world";

string s3=s1+", ";             //ok

string s4="hello"+"world";     //error

4、C++程式員習慣於優先選用!=而不是<來編寫迴圈判斷條件。

5、對於vector來說,必須是已經存在的元素才能用下標操作符進行索引。

6、標準庫容器的iterator迭代器中,end操作指向末端元素的下一個,並不指向任何實際的元素,僅僅起到哨兵的作用。

7、採用“*操作符”來訪問迭代器所指向的元素。如果迭代器指向容器的第一個元素,那麼*iter和n[0] 指向的是同一個元素。

8、const_iterator相比一般的迭代器而言,只能用於讀取容器內的元素,而不能改變其值。

9、迭代器相減,如“iter1-iter2”,用來計算兩個迭代器對象的距離,該距離是名為difference_type的signed類型的值。

10、任何改變vector長度的操作都會使已存在的迭代器失效。

11、bitset類用於處理二進位位的有序集。

筆記:《C++ Primer》第3章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.