一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C/C++拾遺(九):string對象與vector對象

 千江水知 2014-04-02
      為了簡化程序的開發(fā),C++在基本庫的基礎上又提供了兩種對象庫,一種是string庫,專門用于處理可變長的字符串對象;另一種是vector,作為一個容器可以容納其他的對象。上述兩種庫對象都是連續(xù)存放的內(nèi)存模式。
關于string:
1. 使用string庫時當然要加入頭文件:#include <string>,當然命名空間要聲明為std;
2. 初始化方式:string s1; //默認構(gòu)造函數(shù),s1為空串
                      string s1("Hello"); 
                      string s2(s1);
                      string s1(n, 'c'); //將s1初始化為'c'的n個副本
3. s1.size()函數(shù)返回s1中的字符個數(shù);s1.empty()用來確認字符串是否為空;
4. 讀入字符串:一種是直接從標準輸入讀入:cin >> s1; //以空白字符(空格、換行、制表符)為分界,從第一個非空白字符讀入,再遇空白字符                                                                                  //終止
                     另一種則是按行讀入:getline(cin, s1);   //僅僅不讀換行符,并且以換行符為分界,開頭的空格也會讀入
5. 為了避免出錯,使用string類類型定義的配套類型string::size_type來表示涉及元素個數(shù)的變量和處理
6. string類對象可以拼接,類似于python,但是要求"+"兩邊必須至少有一個是string類對象
string類庫的基本操作:
對象初始化;
基本屬性:size和empty;
操作:添加新元素和訪問成員
特有操作:對象拼接

點擊(此處)折疊或打開

  1. #include <iostream>
  2. #include <string>

  3. using namespace std;

  4. int main()
  5. {
  6.     string str("Hello\n"); //字面值常量初始化法將'\n'作為一個換行符計算
  7.     string::size_type size; //涉及到string長度/下標的變量必須使用string::size_type類型
  8.     cout << "str's size is :"
  9.          << (size = str.size())<< endl;
  10.     cout << "str is :"
  11.          <<str;
  12.     cout <<"Initial test End..."<< endl;
  13.     cout <<endl<<endl<<endl;
  14.     cout <<"A new test..."<< endl;
  15.     
  16.     cout <<"Please input three strings:..."<<endl;
  17.     string str1, str2, str3;
  18.     cin >> str1;
  19.     cin >> str2;
  20.     cin >> str3;
  21.     cout << "str1 + str2+ str3 :"
  22.          <<(str = str1 + str2 +str3)<<endl;
  23.     cout << "Now let's format the string..."<<endl;
  24.     cout <<str1 + " " + str2 + " " + str3 //string類型拼接符"+"必須與一個string類型相鄰
  25.          <<endl; //string::"+"返回一個string類型對象所以 string + " " + "haha" is OK too
  26.     //cout << "hello" + " "; 這樣寫會報錯,"+"兩側(cè)沒有string類型對象
  27.     //即:string::"+"兩側(cè)不能都是字符串常量!
  28.     system("pause");
  29.     return 0;
  30. }
關于vector
1. vector是一個類模板,必須使用<>明確類型才成為一個具體的類類型,初始化同樣有四種方式:
vector<T>  v1;          //默認構(gòu)造函數(shù)v1為空
vector<T> v2(v1);
vector<T> v3(n, i);     //包含n個值為i的元素
vetor<T>  v4(n);    //包含有值初始化元素的n個副本
2. vector的屬性操作:vector.size()和vector.empty(),當然長度/個數(shù)是vector對應的配套類型:vector<T>::size_type
3. 訪問vector元素可以借助于下標(同string),但是為了與其他容器一致起來(并非所有容器都可以使用下標訪問成員),我們建議使用迭代器來訪問成員。定義
vector<T> vec
vector<T> iterator iter = vec.begin();    //初始化一個迭代器指向vec的第一個元素
//當vector為空時,vec.begin() == vec.end()
*iter == vec[0];         //可以使用*iter來訪問成員,iter++即可向后訪問
4. vector對象只能用push_back()在后端添加成員,“=”僅僅用來為元素賦值

點擊(此處)折疊或打開

  1. #include <iostream>
  2. #include <vector>

  3. using namespace std;

  4. int main()
  5. {
  6.     int num;
  7.     vector<int> vec;
  8.     while(cin >> num)
  9.     {
  10.         vec.push_back(num); //必須使用push_back()動態(tài)添加新元素
  11.               }
  12.     vector<int>::size_type size = vec.size();
  13.     cout << "vector's length is :" << size<<endl;
  14.     int sum = 0;
  15.     //試用下標來訪問vector中元素
  16.     for (vector<int>::size_type index = 0; index != size; index++)
  17.     {
  18.         cout << "The " <<index <<" element is " << vec[index]<<endl;
  19.         sum += vec[index];
  20.     }
  21.     cout << "The sum of integer is: "<< sum<<endl;
  22.     //迭代器版本
  23.     sum = 0;
  24.     vector<int>::iterator iter = vec.begin();
  25.     for (vector<int>::size_type index = 0; iter != vec.end(); iter++)
  26.     {
  27.         cout <<" The"<<index <<" element is "<< *iter<<endl;
  28.         sum += *iter;
  29.     }
  30.     cout << "The sum of integer is: "<< sum<<endl;
  31.     
  32.     system("pause");
  33.     return 0;
  34.     
  35. }


    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产av天堂一区二区三区粉嫩| 婷婷色网视频在线播放| 国产超薄黑色肉色丝袜| 亚洲综合激情另类专区老铁性| 精品亚洲一区二区三区w竹菊| 亚洲中文字幕亲近伦片| 日本不卡视频在线观看| 字幕日本欧美一区二区| 亚洲一区二区三区四区性色av| 91偷拍视频久久精品| 久久re6热在线视频| 国产精品一区二区三区激情| 91日韩欧美在线视频| 91日韩在线视频观看| 日本91在线观看视频| 亚洲高清一区二区高清| 男生和女生哪个更好色| 国产伦精品一区二区三区高清版| 国内尹人香蕉综合在线| 久久精品久久精品中文字幕| 亚洲精品欧美精品日韩精品| 欧美日韩久久精品一区二区| 亚洲中文字幕亲近伦片| 男人和女人黄 色大片| 国产日产欧美精品大秀| 国产一区二区三区四区免费| 亚洲欧美日韩国产综合在线| 国产爆操白丝美女在线观看| 蜜桃av人妻精品一区二区三区| 国产午夜福利片在线观看| 免费精品一区二区三区| 69久久精品亚洲一区二区| 熟女乱一区二区三区丝袜| 丰满的人妻一区二区三区| 天堂av一区一区一区| 欧美激情一区二区亚洲专区| 情一色一区二区三区四| 国产肥女老熟女激情视频一区| 国产欧美日韩精品成人专区| 亚洲欧美日韩在线中文字幕| 亚洲伦理中文字幕在线观看|