中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++11的initializer_list形參怎么使用

發布時間:2021-11-29 11:49:27 來源:億速云 閱讀:149 作者:iii 欄目:大數據

這篇文章主要講解了“C++11的initializer_list形參怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++11的initializer_list形參怎么使用”吧!

C語言中的可變參數

編程過程中經常會遇到希望函數的參數可變的情況,一個最常見的例子就是神奇的printf函數,它可以根據用戶的需要調整參數的個數。其實我們自己也可以設計可變參數的函數。例如下面的函數就可以根據第一個參數決定輸入參數的個數。

int test(int num, ...)
{
   int i, result = 0;
   va_list parlist;
   va_start(parlist, num); //準備參數列表
   for (i = 0; i < num; i++)
   {
       //取得每個參數,類型由av_arg的第二個參數決定
       printf("%d\n",  va_arg(parlist, int));
   }
   va_end(parlist);//關閉參數列表
   return result;
}

test的后續參數個數由第一個參數number決定。有了這樣的test函數,就可以根據需要決定參數的個數了。下面的代碼都可以正常動作:

test(2, 10, 20);
test(4, 1, 2, 3, 4);

C++11中的可變參數

C++11在標準庫中提供了initializer_list類,用于處理參數數量可變但類型相同的情況。使用initializer_list最常用的方式是通過大括號包圍的值列表對其進行初始化:

initializer_list<int> vlist{9, 8, 7, 6};

除了不能修改vlist中的值以外,可以像一般的list一樣使用。

繼續看下面的函數:

template<typename T>
void output(initializer_list<T> lst)
{
   for(auto &a : lst){
       cout << a << endl;
   }
}

這個函數很簡單,就是輸出list中的內容,它有幾個特點:

  1. 通過模版,auto的使用,是它可以自動適應參數的類型

  2. 通過initializer_list的使用,自動適應參數的個數。

函數弄好以后,怎么使用就可以看心情了。

initializer_list<int> vlist{9, 8, 7, 6};
output(vlist);

output({1, 3, 4, 5});

output({"How", "are", "you", "!"});

感謝各位的閱讀,以上就是“C++11的initializer_list形參怎么使用”的內容了,經過本文的學習后,相信大家對C++11的initializer_list形參怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

胶州市| 微博| 广汉市| 全州县| 特克斯县| 温州市| 吴川市| 沅江市| 仁布县| 达孜县| 定陶县| 镇宁| 临洮县| 台前县| 河北省| 红河县| 罗源县| 南部县| 盖州市| 渭南市| 阿荣旗| 武宣县| 巴楚县| 南安市| 酒泉市| 顺平县| 灌南县| 郁南县| 随州市| 临邑县| 临颍县| 霍山县| 金湖县| 容城县| 黔西县| 安乡县| 盘山县| 都江堰市| 化州市| 河西区| 年辖:市辖区|