今天要說的是C++使用可變參數(shù)的方式,包括std::initializer_list
std::initializer_list
是C++11新標(biāo)準(zhǔn)引入的初始化的列表,是一個(gè)模板類,可通過{...}形式傳入并構(gòu)造,這里介紹使用可變參數(shù)的情況:
#include#include #include using std::string; using std::cout; using std::endl; template using initializer_list = std::initializer_list ; void func(initializer_list L) { cout << L.size() << endl; for (auto a = L.begin(); a != L.end(); ++a) { cout << *a << " "; } cout << endl; } int main() { func({"123","asd","zmh"}); return 0; }
有個(gè)特點(diǎn)是初始化列表存儲(chǔ)的類型是固定的,如果傳入不可支持類型轉(zhuǎn)換則編譯錯(cuò)誤
可變參數(shù)模板
可變模板參數(shù)是C++11新標(biāo)準(zhǔn)引入的,是可接收可變數(shù)目參數(shù)模板的模板函數(shù)和模板類,可變數(shù)目的參數(shù)是參數(shù)包:模板參數(shù)包(template
#includeusing std::cout; using std::endl; using std::string; template void func(const string &s1,const T &s2) { cout << s1 << " " << s2 << endl; } template void func(const string &s, const T&... t) { cout << sizeof...(t) < #include "a.h" int main() { func("123","asd","zmh"); return 0; }此處實(shí)參可以不使用{... , ... , ...}方式傳入。
可變參數(shù)模板有另一個(gè)主要用處,可以用于模板轉(zhuǎn)發(fā)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享名稱:C++使用可變參數(shù)-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://weahome.cn/article/hgcjs.html