国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++基礎】auto關鍵字(C++11)(auto的使用細則;auto不能推導的場景;auto的使用場景;基于范圍的for循環(huán))

這篇具有很好參考價值的文章主要介紹了【C++基礎】auto關鍵字(C++11)(auto的使用細則;auto不能推導的場景;auto的使用場景;基于范圍的for循環(huán))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

九、auto關鍵字

9.1 auto簡介

  • 在早期C/C++(C++98)中auto的含義是:使用auto修飾的變量,是具有自動存儲器的局部變量,但遺憾的是一直沒有人去使用它。因為在函數(shù)內(nèi)定義的變量默認就是局部變量。

  • C++11中,標準委員會賦予了auto全新的含義即:auto不再是一個存儲類型指示符,而是作為一個新的類型指示符來指示編譯器,auto聲明的變量必須由編譯器在編譯時期推導而得。

  • 為了避免與C++98中的auto發(fā)生混淆,C++11只保留了auto作為類型指示符的用法

int TestAuto()
{
return 10;
}
int main()
{
int a = 10;
auto b = a;
auto c = 'a';
auto d = TestAuto();
cout << typeid(b).name() << endl;
cout << typeid(c).name() << endl;
cout << typeid(d).name() << endl;
//auto e; 無法通過編譯,使用auto定義變量時必須對其進行初始化
return 0;
}

測試結果:

【C++基礎】auto關鍵字(C++11)(auto的使用細則;auto不能推導的場景;auto的使用場景;基于范圍的for循環(huán))

注意:使用auto定義變量時必須對其進行初始化,在編譯階段編譯器需要根據(jù)初始化表達式來推導auto的實際類型。因此auto并非是一種“類型”的聲明,而是一個類型聲明時的“占位符”,編譯器在編譯期會將auto替換為變量實際的類型。

9.2 auto的使用細則

  1. auto與指針和引用結合起來使用

    用auto聲明指針類型時,用auto和auto*沒有任何區(qū)別(只做類型強調(diào)用),但用auto聲明引用類型時則必須加&

int main()
{
int x = 10;
auto a = &x;
auto* b = &x;
auto& c = x;
cout << typeid(a).name() << endl;
cout << typeid(b).name() << endl;
cout << typeid(c).name() << endl;
*a = 20;
*b = 30;
c = 40;
return 0;
}

測試結果:

【C++基礎】auto關鍵字(C++11)(auto的使用細則;auto不能推導的場景;auto的使用場景;基于范圍的for循環(huán))

  1. 在同一行定義多個變量

    當在同一行聲明多個變量時,這些變量必須是相同的類型,否則編譯器將會報錯,因為編譯器實際只對第一個類型進行推導,然后用推導出來的類型定義其他變量。

void TestAuto()
{
auto a = 1, b = 2;
auto c = 3, d = 4.0; // 該行代碼會編譯失敗,因為c和d的初始化表達式類型不同
}

9.3 auto不能推導的場景

  1. auto不能作為函數(shù)參數(shù)的類型

    // 此處代碼編譯失敗,auto不能作為形參類型,因為編譯器無法對a的實際類型進行推導
    void TestAuto(auto a)
    {}
    
  2. auto不能直接用來聲明數(shù)組

    void TestAuto()
    {
    int a[] = {1,2,3};
    auto b[] = {4,5,6};
    }
    

9.4 auto的使用場景

  1. 隨著程序越來越復雜,程序中用到的類型也越來越復雜,經(jīng)常體現(xiàn)在:

    1. 類型難于拼寫

    2. 含義不明確導致容易出錯

    當類型比較長或比較復雜的時候,auto自動推導類型就顯得十分方便

    std::map<std::string, std::string> dict;
    //std::map<std::string, std::string>::iterator it = dict.begin();
    auto it = dict.begin();
    
  2. auto在實際中最常見的優(yōu)勢用法就是跟C++11提供的新式for循環(huán),還有l(wèi)ambda表達式等進行配合使用。

十、基于范圍的for循環(huán)

10.1 范圍for的語法

在C++98中如果要遍歷一個數(shù)組,可以按照以下方式進行:

void TestFor()
{
int array[] = { 1, 2, 3, 4, 5 };
for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
array[i] *= 2;
for (int* p = array; p < array + sizeof(array)/ sizeof(array[0]); ++p)
cout << *p << endl;
}
  • 對于一個有范圍的集合而言,由程序員來說明循環(huán)的范圍是多余的,有時候還會容易犯錯誤。因此C++11中引入了基于范圍的for循環(huán)。for循環(huán)后的括號由冒號“ :”分為兩部分:第一部分是范圍內(nèi)用于迭代的變量,第二部分則表示被迭代的范圍。

  • 用于迭代的變量會自動依次取指定范圍內(nèi)的數(shù)據(jù),并自動迭代,自動判斷范圍結束。

  • 用于迭代的變量還可以取指定范圍內(nèi)數(shù)據(jù)的引用,并在循環(huán)中對范圍內(nèi)的數(shù)據(jù)進行修改。

void TestFor()
{
int array[] = { 1, 2, 3, 4, 5 };
for(auto& e : array) //取范圍內(nèi)數(shù)據(jù)的引用
e *= 2;
for(auto e : array) //取范圍內(nèi)數(shù)據(jù)的值
cout << e << " ";
return 0;
}

注意:與普通循環(huán)類似,可以用continue來結束本次循環(huán),也可以用break來跳出整個循環(huán)。

10.2 范圍for的使用條件

  1. for循環(huán)迭代的范圍必須是確定的

    對于數(shù)組而言,就是數(shù)組中第一個元素和最后一個元素的范圍;對于類而言,應該提供begin和end的方法,begin和end就是for循環(huán)迭代的范圍。

    以下這段代碼就有問題:

    void TestFor(int array[])
    {
       //array是指針,存放數(shù)組首元素的地址
       for(auto& e : array)
       cout<< e <<endl;
       //這段代碼有問題,因為for的范圍不確定
    }
    
  2. 迭代的對象(迭代器)要實現(xiàn)++和==的操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-412344.html

到了這里,關于【C++基礎】auto關鍵字(C++11)(auto的使用細則;auto不能推導的場景;auto的使用場景;基于范圍的for循環(huán))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【C++初階】C++基礎(下)——引用、內(nèi)聯(lián)函數(shù)、auto關鍵字、基于范圍的for循環(huán)、指針空值nullptr

    【C++初階】C++基礎(下)——引用、內(nèi)聯(lián)函數(shù)、auto關鍵字、基于范圍的for循環(huán)、指針空值nullptr

    ? 目錄 1.?引用 1.1?引用概念 1.2?引用特性 1.3?常引用 1.4?使用場景 1.5?傳值、傳引用效率比較 1.6?引用和指針的區(qū)別 2.?內(nèi)聯(lián)函數(shù) 2.1?概念 2.2?特性 3.auto(C++11) 3.1?類型別名思考 3.2 auto簡介 3.3 auto的使用細則 3.4 auto不能推導的場景 4.?基于范圍的for循環(huán)(C++11) 4.1?

    2024年02月15日
    瀏覽(27)
  • 從C語言到C++(第一章_C++入門_下篇)內(nèi)聯(lián)函數(shù)+auto關鍵字(C++11)+范圍for +nullptr

    從C語言到C++(第一章_C++入門_下篇)內(nèi)聯(lián)函數(shù)+auto關鍵字(C++11)+范圍for +nullptr

    目錄 1. 內(nèi)聯(lián)函數(shù) 1.1 內(nèi)聯(lián)函數(shù)的概念 1.2 內(nèi)聯(lián)函數(shù)的特性 1.3 宏的優(yōu)缺點和替代方法 2. auto(C++11) 2.1 改版前的auto 2.2 C++11的auto 2.3 auto 的使用場景 2.4?使用auto的注意事項 3. 范圍 for(C++11) 3.1 范圍 for 的用法 3.2 范圍 for 的使用條件 4.?指針空值 nullptr 4.1 C++ 98 中的指針空

    2023年04月21日
    瀏覽(21)
  • C++ : auto關鍵字

    ? ? ? ? 前提引入: ? ? ? ? ? ? ? ? 1.類型名,在絕大多數(shù)編程時,我們都會引入類型來定義一個我們需要的數(shù)據(jù)。 ? ? ? ? ? ? ? ? 類型眾多,偶爾我們會遇見一串類型名,使用起來無比復雜。存在拼寫錯誤,含義不明確導致出錯的問題。 ? ? ? ? ? ? ? ? 列如: ? ? ?

    2023年04月11日
    瀏覽(25)
  • C++ 入門篇(八) auto關鍵字

    C++ 入門篇(八) auto關鍵字

    目錄 一、auto簡介 二、auto的使用場景 三、注意事項 拓、范圍for ?【總結】 【源代碼】? 1.是什么? ? ? ? ? auto是一個提示符,提示編譯器根據(jù)變量的值來推導變量的類型。 ????????在早期C/C++中auto的含義是:使用auto修飾的變量,是具有自動存儲器的局部變量,C++11中,

    2024年02月08日
    瀏覽(15)
  • 【開懂C++】引用與關鍵字auto

    【開懂C++】引用與關鍵字auto

    引用就是給一個已經(jīng)存在的變量取一個別名,與變量共用一段內(nèi)存空間。注意引用的類型必須和變量類型相同,來演示下引用如何使用。 如上面的代碼所示:我們給a取了個別名b,給b取別名c…也就是b是a的引用,c是b的引用…。 其實b,c,d都代表著a,它們都共用著一塊內(nèi)存空間

    2023年04月18日
    瀏覽(25)
  • 【C++入門】引用、內(nèi)聯(lián)函數(shù)、auto 關鍵字

    從語法上理解,引用就是給變量取一個 別名 ,它沒有獨立空間,和它引用的變量共用一塊空間。 例子: 值得注意的是,C++ 中的引用一經(jīng)初始化,后面是改變不了指向的(這點與Java有所不同),而且引用是必須初始化的。 引用的類型也必須和原變量對應,顯然,你肯定不能

    2024年02月16日
    瀏覽(14)
  • 【C++】引用、內(nèi)聯(lián)函數(shù)、auto關鍵字等

    【C++】引用、內(nèi)聯(lián)函數(shù)、auto關鍵字等

    前言:在前面我們講解了C++入門基礎的一些學習例如命名空間、缺省參數(shù)、函數(shù)重載等。今天我們將進一步的學習,跟著博主的腳步再次往前邁一步吧。 ?? 博主CSDN主頁:衛(wèi)衛(wèi)衛(wèi)的個人主頁 ?? ?? 專欄分類:高質(zhì)量C++學習 ?? ??代碼倉庫:衛(wèi)衛(wèi)周大胖的學習日記?? ??關注博

    2024年02月20日
    瀏覽(95)
  • 【C++初階(三)】引用&內(nèi)聯(lián)函數(shù)&auto關鍵字

    【C++初階(三)】引用&內(nèi)聯(lián)函數(shù)&auto關鍵字

    目錄 ?前言 ?1. 引用 ? 1.1 引用的概念? ?1.2 引用的特性 ?1.3 引用的權限 ?1.4 引用的使用 ?1.5 引用與指針的區(qū)別 2. 內(nèi)聯(lián)函數(shù) 2.1? 什么是內(nèi)聯(lián)函數(shù) 2.2? 內(nèi)聯(lián)函數(shù)的特性 ?3. auto ?3.1 auto簡介 ?3.2 auto使用規(guī)則 ?3.3 auto不能使用的場景 4.? 基于范圍的for循環(huán) ?4.1 范圍for使用

    2024年02月08日
    瀏覽(36)
  • 【C++】:函數(shù)重載,引用,內(nèi)聯(lián)函數(shù),auto關鍵字,基于范圍的for循環(huán),nullptr關鍵字

    【C++】:函數(shù)重載,引用,內(nèi)聯(lián)函數(shù),auto關鍵字,基于范圍的for循環(huán),nullptr關鍵字

    在C語言中,同名函數(shù)是不能出現(xiàn)在同一作用域的,但是在C++中卻可以,但是要滿足函數(shù)重載的規(guī)則。 那什么是函數(shù)重載呢?它的規(guī)則是什么呢? 函數(shù)重載 :是函數(shù)的一種特殊情況,C++允許在 同一作用域 中聲明幾個功能類似的 同名函數(shù) ,這些同名函數(shù)的 形參列表(參數(shù)個數(shù)

    2024年04月26日
    瀏覽(25)
  • C++面試八股文:了解auto關鍵字嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第15面: 面試官:了解 auto 嗎? 二師兄:嗯,了解一些(我很熟悉)。 面試官:說一說 auto 的用法吧? 二師兄: auto 主要是為了編譯器進行類型推導。比如: 二師兄:也可以作為函數(shù)返回類型的占位符: 二師兄:在C

    2024年02月09日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包