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

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

開發 后端
C++集合初始化的應用在實際程序開發中應用非常頻繁,對于這樣一個基礎應用技術,我們需要在學習的過程中加強關注度。

C++編程語言中有很多比較重要的概念,需要我們不斷的去學習。比如今天為大家介紹的C++集合初始化的相關概念,就是一個比較重要的應用技術。那么我們就一起來看看這方面的內容吧。

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

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

如果給出的初始化值多于數組元素的個數,編譯器就會給出一條出錯信息。但如果給的初始化值少于數組元素的個數,那將會怎么樣呢?例如:

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

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

數組還有一種叫自動計數的快速初始化方法,就是讓編譯器按初始化值的個數去決定數組的大小:

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

現在,如果我們決定增加其他的元素到這個數組上,只要增加一個初始化值即可,如果以此建立我們的代碼,只需在一處作出修改即可,這樣,我們在修改時出錯的機會就減少了。但怎樣確定這個數組的大小呢?用表達式sizeof c/sizeof *c(整個數組的大小除以第一個元素的大小)即可算出,這樣,當數組大小改變時它無需修改。

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

s t r u c t也是一種C++集合初始化類型,它們也可以用同樣的方式初始化。因為C風格的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' }; 

如果我們有一個這種s t r u c t的數組,我們也可以用嵌套的大括號來初始化每一個對象。

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

這里,第三個對象被初始化為零。

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

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

我們必須指示構造函數調用,最好的方法像下面這樣:

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

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

【編輯推薦】

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

2010-02-04 13:56:24

C++類模板特化

2010-02-04 17:39:48

C++字符串類型

2010-02-03 13:22:07

C++時間

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++類型轉換

2010-02-02 15:30:05

C++ include

2010-02-01 17:24:41

C++循環語句

2010-02-03 14:36:47

C++仿函數

2023-11-12 23:08:17

C++初始化

2010-02-05 17:34:37

C++函數模板

2010-02-06 14:04:58

C++內存使用機制

2010-02-04 10:08:00

C++靜態成員函數

2010-02-01 14:07:12

C++多態性

2009-12-21 15:33:07

WCF集合元素

2009-09-17 16:17:41

C#參差數組初始化

2010-02-04 17:32:43

C++中C風格字符串

2011-06-17 15:29:44

C#對象初始化器集合初始化器

2009-08-26 15:28:52

C#對象集合初始化器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久一级毛片 | 久久亚洲天堂 | 中文字幕在线一区 | av天空| 欧美一级毛片在线播放 | 精品国产伦一区二区三区观看体验 | 国产精品久久久久久久午夜片 | 伊人网综合在线观看 | 欧美久久精品一级黑人c片 91免费在线视频 | 性高湖久久久久久久久3小时 | 亚洲一区二区三区在线播放 | 欧美精品片 | www.com久久久 | 中文字幕亚洲欧美 | 亚洲国产精品一区 | 亚洲欧美在线观看 | 国产成人免费 | 亚洲成av| 操人网 | 欧美一级特黄aaa大片在线观看 | 久久久久久久久久久久久91 | 一区二区三区在线 | 国产精品jizz在线观看老狼 | a久久| 精品国产乱码久久久久久闺蜜 | 国产精品久久久久久久久免费高清 | 日韩精品视频在线观看一区二区三区 | 爱爱免费视频 | 精品免费国产视频 | 久久久久久久久久久久久久久久久久久久 | 日韩国产中文字幕 | 亚洲精品中文字幕中文字幕 | 国产精品久久久久久久久久久久冷 | 久久久一区二区三区 | 欧美色综合一区二区三区 | 99精品久久 | www.夜夜草| 亚洲免费人成在线视频观看 | 日韩精品中文字幕一区二区三区 | jizz视频 | 中文字幕在线观看一区二区 |