1. 程式人生 > >c++字串、向量和陣列

c++字串、向量和陣列

前一段時間忙著趕專案進度,現在就接著之前學習的內容繼續學習。

1、c++的內建型別(數字和字元等),體現了大多數計算機硬體本身具備的能力。

2、位於標頭檔案中的程式碼一般不用using進行宣告,因為標頭檔案的內容會拷貝到所有引用它的檔案中去。

3、關於直接初始化和拷貝初始化:

        拷貝初始化:使用等號進行初始化即為拷貝初始化,例如:string s5 = "everyone can be a better man ";

        直接初始化:不使用等號進行初始化即為直接初始化,例如:string s5("everyone can be a better man");

        建議使用的時候儘量使用直接初始化,因為拷貝初始化會建立一個臨時物件。

4、使用cin>>對string物件執行讀取操作時,會自動忽略遇到的空白(空格符、換行符、製表符)並從第一個真正的的字元開始讀起,直到遇見下一處空白。: 

//example 
 int main()
{
       string s;
       cin>>s;
       cout << s << endl  ;//如果程式輸入的是"hello word!"輸出為"hello"
      return 0;
}

5、使用getline讀取輸入:getline函式的引數是一個輸入流和一個string物件,函式從給定的輸入流中讀取內容直到遇到換行符為止。

int main()
{
   string line;
   while (getline(cin,line))
      cout << line << endl;
   return 0;
}

6、string::size_type型別:string物件包含的字元個數,他是一個無符號型別的值能夠存放下任何string物件的大小。

7、如果一條表示式中已經有在用.size()函數了,就不要使用int了。避免混用int和unsigned。

8、關於兩個string物件的對比:

  1.   如果兩個string物件的長度不同,而且較短的string物件的每個字元都與較長string物件對應位置的字元相同,那麼就說較短的string物件小於較長的物件。
  2. 如果兩個string物件對應位置的字元都不相同,則比較第一對相異字元。             

9、當把string物件和字元字面值混在一條語句中使用時,要確保+號的兩邊至少有一個是string物件。

10、cctypet標頭檔案中用來處理string物件的方法:

                

11、c++在引用c中的標頭檔案時將.h去掉,再在前面加上c。例如:ctype.h->cctype。

12、使用範圍for迴圈可以遍歷string物件中的每一個元素。如果想改變string中的元素要把迴圈變數定義成引用型別。

//example
string str("some string");
for (auto c:str)
   cout << c << endl;

13、string物件可以使用下標運算子遍歷其中的每一個元素[i],使用時務必確保下標的有效。

//使用下標遍歷string物件中元素
string s("everyone can be a better one");
for(int i =0;i<(s.size()-1);i++)
{
   cout << s[i];//可以實現輸出string中的每一個元素
}

14、vector可以容納絕大多數型別的物件作為其元素,但是不能為引用(引用不是物件沒有分配記憶體)

15、c++提供的幾種初始化方式:

            (1)、拷貝初始化;(2)、類內初始化;(3)、列表初始化。

16、如果迴圈體內有向vector物件新增元素的語句,不能使用範圍for迴圈。

17、要使用vector的size_type,需首先定義它是由那種型別定義的。

//example
vector <int>::size_type;

18、有關陣列:

               (1)陣列的維數編譯的時候應該是一個常數,函式內部定義陣列預設初始化會使他含有未定義的值。

               (2)初始化字元陣列要考慮最有一個是'\0'

               (3)陣列不支援用另外一個數組拷貝和賦值

//關於複雜陣列的初始化
int *ptrs[10];//一個包含10個整形指標的陣列
int &refs[10];//錯誤:不存在包含引用的陣列(因為引用不是物件)
int (*parray)[10]; //指向陣列的指標
int (&refs)[10];//指向陣列的引用