C++新特性字串、向量和數組筆記

來源:互聯網
上載者:User


範圍for(range for)

1 for (declaration: expression)

2     statement
vector和數組都是對象的集合,而引用不是對象。

vector對象可以高效地增長,在定義vector對象的時候設定其大小也就沒什麼必要了,事實上如果這麼做效能可能更差。

C++11新特性:cbegin() & cend()
為了便於專門得到const_iterator類型的傳回值,C++11新標準引入了兩個新函數,分別是cbegin() 和cend().

如何理解複雜的數組聲明?

1 int *ptrs[10]; //ptrs是含有10個整型指標的數組
2 int &refs[10] = /*?*/; //錯誤,不存在引用的數組
3 int (*Parray) [10] = &arr; //Parray指向一個含有10個整數的數組
4 int (&arrRef) [10] = arr; //arrRef引用一個含有10個整數的數組

對於Parray來說,從右向左理解就不太合理了。因為數組的維度是緊跟著被聲明的名字的,所以就數組而言,由內向外閱讀要比從右向左好多了。

首先是圓括弧裡面的,*Parray意味著Parray是個指標;

接下來觀察右邊,Parray是個指向大小為10的數組的指標;

最後觀察左邊,知道數組中的元素是int。

1 int ia[5];
2 auto ia2(ia); //ia2是一個整型指標
3 decltype(ia) ia3; //ia3是一個含有10個整數的數組

C++11新特性:標準庫函數begin() 和end()
為了讓指標的計算更安全、簡單,C++11新標準引入了兩個名為begin和end的函數,用於計算數組的迭代器。

多維陣列的訪問方式

 1     int ia[3][4];
 2     for (auto p = ia; p != ia + 3; ++p)
 3     {
 4         for (auto q = *p; q != *p + 4; ++q)
 5         {
 6             //do something
 7         }
 8     }
 9
10     for (auto p = begin(ia); p != end(ia); ++p)
11     {
12         for (auto q = begin(*p); q != end(*p); ++q)
13         {
14             //do something
15         }
16     }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.