成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++集合初始化基本概念概述

開發(fā) 后端
C++集合初始化的應(yīng)用在實(shí)際程序開發(fā)中應(yīng)用非常頻繁,對(duì)于這樣一個(gè)基礎(chǔ)應(yīng)用技術(shù),我們需要在學(xué)習(xí)的過程中加強(qiáng)關(guān)注度。

C++編程語言中有很多比較重要的概念,需要我們不斷的去學(xué)習(xí)。比如今天為大家介紹的C++集合初始化的相關(guān)概念,就是一個(gè)比較重要的應(yīng)用技術(shù)。那么我們就一起來看看這方面的內(nèi)容吧。

C++集合初始化往往既冗長又容易出錯(cuò)。而C++中集合的初始化卻變得很方便而且很安全。當(dāng)我們產(chǎn)生一個(gè)集合對(duì)像時(shí),我們要做的只是指定初始值就行了,然后初始化工作就由編譯器去
承擔(dān)了。這種指定可以用幾種不同的風(fēng)格,取決于我們正在處理的集合類型。但不管是哪種情況,指定的初值都要用大括號(hào)括起來。比如一個(gè)預(yù)定義類型的數(shù)組可以這樣定義:

  1. int a[5]={1,2,3,4,5}; 

如果給出的初始化值多于數(shù)組元素的個(gè)數(shù),編譯器就會(huì)給出一條出錯(cuò)信息。但如果給的初始化值少于數(shù)組元素的個(gè)數(shù),那將會(huì)怎么樣呢?例如:

  1. int b[6]={0}; 

這時(shí),編譯器會(huì)把第一個(gè)初始化值賦給數(shù)組的第一個(gè)元素,然后用0賦給其余的元素。注意,如果我們定義了一個(gè)數(shù)組而沒有給出一列初始值時(shí),編譯器并不會(huì)去做這些工作。所以上面的表達(dá)式是將一個(gè)數(shù)組初始化為零的簡(jiǎn)潔方法,它不需要用一個(gè)f o r循環(huán),也避免了“偏移1位”錯(cuò)誤(它可能比f o r循環(huán)更有效,這依賴于編譯器)。

數(shù)組還有一種叫自動(dòng)計(jì)數(shù)的快速初始化方法,就是讓編譯器按初始化值的個(gè)數(shù)去決定數(shù)組的大小:

  1. int c[] = {1,2,3,4}; 

現(xiàn)在,如果我們決定增加其他的元素到這個(gè)數(shù)組上,只要增加一個(gè)初始化值即可,如果以此建立我們的代碼,只需在一處作出修改即可,這樣,我們?cè)谛薷臅r(shí)出錯(cuò)的機(jī)會(huì)就減少了。但怎樣確定這個(gè)數(shù)組的大小呢?用表達(dá)式sizeof c/sizeof *c(整個(gè)數(shù)組的大小除以第一個(gè)元素的大小)即可算出,這樣,當(dāng)數(shù)組大小改變時(shí)它無需修改。

  1. for(int i = 0; i< sizeof c / sizeof *c; i++)  
  2. c [ i ] + + ; 

s t r u c t也是一種C++集合初始化類型,它們也可以用同樣的方式初始化。因?yàn)镃風(fēng)格的s t r u c t的所有成員都是公共型的,所以它們的值可以直接指定:

  1. struct X {  
  2. int i;  
  3. float f;  
  4. char c;  
  5. } ;  
  6. x1 = {1,2.2,'c' }; 

如果我們有一個(gè)這種s t r u c t的數(shù)組,我們也可以用嵌套的大括號(hào)來初始化每一個(gè)對(duì)象。

  1. X x2[3] = {{1,1.1, 'a'},{2,2.2, 'b'}}; 

這里,第三個(gè)對(duì)象被初始化為零。

如果s t r u c t中有私有成員,或即使所有成員都是公共成員,但有一個(gè)構(gòu)造函數(shù),情況就不一樣了。在上例中,初始值被直接賦給了集合中的每個(gè)元素,但構(gòu)造函數(shù)是通過外在的接口
來強(qiáng)制初始化的。這里,構(gòu)造函數(shù)必須被調(diào)用來完成初始化,因此,如果有一個(gè)下面的s t r u c t類型:

  1. struct Y {  
  2. float f;  
  3. int i;  
  4. Y(int A); // presumably assigned to i  
  5. } ; 

我們必須指示構(gòu)造函數(shù)調(diào)用,最好的方法像下面這樣:

  1. Y y2[] = {Y(1),Y(2),Y(3)}; 

這樣我們就得到了三個(gè)對(duì)象和進(jìn)行了三次構(gòu)造函數(shù)調(diào)用。只要有構(gòu)造函數(shù),無論是所有成員都是公共的s t r u c t還是一個(gè)帶私有成員的c l a s s ,所有的初始化工作都必須通過構(gòu)造函數(shù),即使
我們正在對(duì)一個(gè)C++集合初始化。

【編輯推薦】

  1. 刪除C++容器值相關(guān)技巧講解
  2. C++ Builder操作Excel表實(shí)現(xiàn)技巧講解
  3. C++指針漂移問題解決方案
  4. C++頭文件包含內(nèi)容概覽
  5. C++初始化和賦值區(qū)別解析
責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-04 13:56:24

C++類模板特化

2010-02-04 17:39:48

C++字符串類型

2010-02-03 13:22:07

C++時(shí)間

2010-02-05 12:57:20

C++ kdevelo

2010-02-02 10:33:22

C++引用

2010-02-02 13:41:01

C++類繼承

2010-02-03 11:11:18

C++類型轉(zhuǎn)換

2010-02-02 15:30:05

C++ include

2010-02-01 17:24:41

C++循環(huán)語句

2010-02-03 14:36:47

C++仿函數(shù)

2010-02-05 17:34:37

C++函數(shù)模板

2010-02-06 14:04:58

C++內(nèi)存使用機(jī)制

2010-02-04 10:08:00

C++靜態(tài)成員函數(shù)

2023-11-12 23:08:17

C++初始化

2010-02-01 14:07:12

C++多態(tài)性

2009-12-21 15:33:07

WCF集合元素

2009-09-17 16:17:41

C#參差數(shù)組初始化

2010-02-04 17:32:43

C++中C風(fēng)格字符串

2011-06-17 15:29:44

C#對(duì)象初始化器集合初始化器

2009-08-26 15:28:52

C#對(duì)象集合初始化器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 在线一区二区三区 | 一级一级毛片免费看 | 韩国av一区二区 | 亚洲一二三区av | 欧美视频二区 | 国产在线高清 | 亚洲综合在线一区二区 | 拍拍无遮挡人做人爱视频免费观看 | 在线免费观看黄色 | 伊人影院在线观看 | 国产精品美女久久久久aⅴ国产馆 | 久久精品毛片 | 亚洲一区国产精品 | 色狠狠一区 | 久久综合一区 | 亚洲视频一区二区三区 | 91网站视频在线观看 | 日韩欧美大片在线观看 | 91精品国产欧美一区二区 | 久久一 | 久久久久久久久久久久91 | 亚洲精品第一国产综合野 | 毛片软件| 激情毛片 | a国产一区二区免费入口 | 黄网站在线播放 | 亚洲免费视频在线观看 | 欧美精品一区二区三区在线播放 | 粉嫩国产精品一区二区在线观看 | 日韩精品一区二区三区在线播放 | 中文在线播放 | 国产精品视频网址 | 亚洲国产成人久久久 | 日本中出视频 | 男人av的天堂 | 国产精品中文字幕在线播放 | 91资源在线 | 国产一区二区三区四区五区加勒比 | 毛片在线看片 | 91精品国产欧美一区二区 | 国产日批 |