用花括號初始化器列表初始化乙個物件,其中對應建構函式接受乙個std::initializer_list
引數.
#include #include#include
template
struct
s
v.insert(v.end(), l.begin(), l.end());
}std::pair
c_arr() const
; //
在 return 語句中複製列表初始化
//這不使用 std::initializer_list}};
template
void
templated_fn(t) {}
intmain()
; //
複製初始化
函式呼叫中的列表初始化
std::cout
<< "
the vector size is now
"<< s.c_arr().second << "
ints:\n";
for(auto n : s.v)
std::cout
<< n << '';
std::cout
<< '\n'
; std::cout
<< "
range-for over brace-init-list: \n";
for (int x : ) //
auto 的規則令此帶範圍 for 工作
std::cout << x << '';
std::cout
<< '\n'
; auto al = ; //
auto 的特殊規則
std::cout
<< "
the list bound to auto has size() =
"<< al.size() << '\n'
; //templated_fn();
//編譯錯誤!「 」不是表示式,
//它無型別,故 t 無法推導
templated_fnint>>(); //
ok templated_fnint>>(); //
也 ok
douzujun 閱讀(
...)
編輯收藏
initializer list形參總結
1 基本概念 如果函式的實參數量未知但是全部實參的型別都相同,那麼我們可以使用initializer list型別的形參。initializer list是一種標準庫型別,用於表示某種特定型別的值得陣列。vector是c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類...
初始化列表
與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。在c 中,struct和class的唯一區別是預設的克訪問性不同,而這裡我們不考慮訪問性的問題,所以下面的 都以struct來演示。struct foo 初始化列表 ...
初始化列表
初始化列表一般用於建構函式賦值的操作中,它的常用賦值物件有 1 常量 常資料成員只能用初始化列表來初始化 2 引用型別 3 無參建構函式的類的物件。具體格式為 類名 形參表 如int x,int y 成員資料 x 成員資料 y 意思是成員資料繫結x,y。下面以幾個例子來說明一下 一 求圓面積 inc...