Rust 從基礎(chǔ)到實踐(12)Vector

//vectors


rust_logo.jpg

下面是創(chuàng)建一個 Vector 方法卡者,我們也可以可以調(diào)用 Vect::new 方法來創(chuàng)建一個空的 Vector室囊。

fn main(){
     let x = vec![1,2,3,4,5];
}

在 c++ 中的 vec 本質(zhì)是模板,而在 Rust 中 Vector 是宏揖曾,有關(guān)宏的概念比較高級我們在以后內(nèi)容來分享尾序,這里大家需要了解到 vector 有兩個參數(shù)表示 vector 的承載能力,一個是 Vector 的長度迷郑,一個是 Vector 擴展能力枝恋,所謂的擴展能力就是預(yù)留多少內(nèi)存給 Vector 放置更多元素。

    let mut v = Vec::new();

    v.push(5);
    v.push(6);
    v.push(7);
    v.push(8);
    
    for i in &v {
        println!("{}",i)
    }

通過 push 方法可以往 v 中添加元素嗡害,我們遍歷 Vector 來打印每一個元素焚碌。這里需要強調(diào)一下在 Vector 我們只能放置同一類型的元素。

v.push(10);
println!("{:?} {} {} ", &v, v.len(),v.capacity());

通過方法打印出 Vector 的長度和擴展能力霸妹,這里看到 Vector 的長度為 5 十电,擴展能力為 8,

[5, 6, 7, 8, 10] 5 8

如果我們繼續(xù)向 Vector 添加更多的元素叹螟,如果超出其承載能力鹃骂,Vector 是按什么規(guī)律進行擴展的呢。我們可以嘗試一下

v.push(10);
    v.push(12);
    v.push(13);
    v.push(15);
    v.push(16);
    v.push(17);
    v.push(18);

    println!("{:?} {} {} ", &v, v.len(),v.capacity());

可以看到現(xiàn)在擴展變成 16 罢绽,這里 Vector 是按 2 倍數(shù)進行不斷擴展的畏线。

[5, 6, 7, 8, 10, 12, 13, 15, 16, 17, 18] 11 16

我們可以用 pop 方法來獲取 Vector 的最后的元素

println!("{:?}",v.pop())

這里返回值 Some 進行一層包裹,這是可選值良价,我們將其解構(gòu)來獲取 18 這個值象踊。
Rust 從基礎(chǔ)到實踐(15) Some

Some(18)
let mut v:Vec<i32> = Vec::new();

   
    for i in &v {
        println!("{}",i)
    }

   
    println!("{:?} {} {} ", &v, v.len(),v.capacity());

    println!("{:?}",v.pop())

在創(chuàng)建 Vector 我們可以為 Vector 指定類型,因為這里創(chuàng)建了一個空 Vector棚壁,所以長度和承載能力都為 0杯矩。

[] 0 0
None
#[derive(Debug)]
enum Example {
    Float(f64),
    Int(i32),
    Text(String),
}

fn main(){
    // let x = vec![1,2,3,4,5];

   let r = vec![
       Example::Int(120),
       Example::Float(12.12),
       Example::Text(String::from("hello"))
   ];

    println!("{:?}",&r)
}

因為枚舉可以看做一種類型,所以 Vector 可以接收枚舉元素來實現(xiàn)接收多種類型元素

[Int(120), Float(12.12), Text("hello")]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末袖外,一起剝皮案震驚了整個濱河市史隆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌曼验,老刑警劉巖泌射,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鬓照,居然都是意外死亡熔酷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門豺裆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拒秘,“玉大人号显,你說我怎么就攤上這事√删疲” “怎么了押蚤?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長羹应。 經(jīng)常有香客問我揽碘,道長,這世上最難降的妖魔是什么园匹? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任雳刺,我火速辦了婚禮,結(jié)果婚禮上裸违,老公的妹妹穿的比我還像新娘煞烫。我一直安慰自己,他們只是感情好累颂,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凛俱,像睡著了一般紊馏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蒲犬,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天朱监,我揣著相機與錄音,去河邊找鬼原叮。 笑死赫编,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的奋隶。 我是一名探鬼主播擂送,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唯欣!你這毒婦竟也來了嘹吨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤境氢,失蹤者是張志新(化名)和其女友劉穎蟀拷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萍聊,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡问芬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了寿桨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片此衅。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炕柔,到底是詐尸還是另有隱情酌泰,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布匕累,位于F島的核電站陵刹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏欢嘿。R本人自食惡果不足惜衰琐,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炼蹦。 院中可真熱鬧羡宙,春花似錦、人聲如沸掐隐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虑省。三九已至匿刮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間探颈,已是汗流浹背熟丸。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伪节,地道東北人光羞。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像怀大,于是被迫代替她去往敵國和親纱兑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容