這篇文章主要介紹“C++11列表初始化是怎樣的”,在日常操作中,相信很多人在C++11列表初始化是怎樣的問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C++11列表初始化是怎樣的”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、天等網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為天等等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
以前什么樣
C或者C++在初始化數(shù)組時(shí),可以使用下面的花括號(hào)加初始值的形式:
int int_array[] = {1, 2, 3, 4, 5};
在C++中,如果有下面這樣一個(gè)類:
class Tester
{
public:
Tester(int value)
:m_value(value * 2)
{ }
void print(){
cout << m_value << endl;
}
private:
int m_value;
};
那么它的初始化可以寫成這樣:
Tester tester_array[] = {6, 7, 8, 9, 10};
Tester的構(gòu)造函數(shù)可以被正常地調(diào)用。
存在的問題
問題就是這種方法的運(yùn)用范圍很窄,許多場(chǎng)景都用不了。例如vector,可以像數(shù)組一樣使用,可以自己管理數(shù)據(jù)長(zhǎng)度,還提供各種操作數(shù)組的方法。聲明的方法也很簡(jiǎn)單:
vector
但是有一個(gè)問題,當(dāng)需要指定元素初始化vector時(shí)就不那么方便了。
初始化方法1:
int_vector.push_back(5);
int_vector.push_back(4);
int_vector.push_back(3);
int_vector.push_back(2);
int_vector.push_back(1);
初始化方法二:
int int_array[] = {1, 2, 3, 4, 5};
for(int i = 0; i < sizeof(int_array)/sizeof(int_array[0]); ++i)
{
int_vector.push_back(int_vector[i]);
}
無論那種方法,都給人一種如鯁在喉的感覺。
那里有不方便,那里就有改進(jìn)
C++11中擴(kuò)展了使用花括號(hào)初始化變量的應(yīng)用范圍,稱這種初始化方式為列表初始化。
例如:
可以像下面這樣初始化vector:
vector
可以像下面這樣初始化list:
list
甚至可以像下面這樣初始化map
map
另一種形式
下面和寫法也合法,和上面的幾種寫法等價(jià)。
vector
list
map
到此,關(guān)于“C++11列表初始化是怎樣的”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!