中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

現(xiàn)在最靠譜的購物網(wǎng)站有哪些天津seo實(shí)戰(zhàn)培訓(xùn)

現(xiàn)在最靠譜的購物網(wǎng)站有哪些,天津seo實(shí)戰(zhàn)培訓(xùn),c2c的平臺有哪些,一起做彩票網(wǎng)站的人一、定義數(shù)組 (一)一維數(shù)組 1.指定所有元素 語法格式 let variable_name: [dataType; size] [value1,value2,value3];例如 let arr: [i32; 4] [10,20,30,40];2.指定初始值和長度 所有元素具有相同的值 語法格式 let variable_name: [dataType; siz…

一、定義數(shù)組

(一)一維數(shù)組
1.指定所有元素
語法格式

let variable_name: [dataType; size] = [value1,value2,value3];

例如

let arr: [i32; 4] = [10,20,30,40];

2.指定初始值和長度
所有元素具有相同的值
語法格式

let variable_name: [dataType; size] = [value; size];

例如

let arr: [i32;4] = [-1;4];

注意
數(shù)組的長度必須在編譯時就是已知的,而且編譯后是固定不變的。因此聲明數(shù)組時長度必須是整數(shù)字面量或者整數(shù)常量。
如果數(shù)組長度是一個變量,則會編譯錯誤。例如下面的代碼

fn main() {let N: usize = 20;let arr = [0; N]; //錯誤: non-constant used with constantprint!("{}",arr[10])
}

如果我們將 let 關(guān)鍵字修改為 const 關(guān)鍵字,編譯就能通過了。

fn main() {const N: usize = 20;let arr = [0; N];     // 固定大小print!("{}",arr[10])
}

3.省略數(shù)組類型

let variable_name = [value1,value2,value3];
let variable_name = [value; size];

例如

let arr = [10,20,30,40];
let arr = [-1;4];

4.可變數(shù)組
在上面幾種方式基礎(chǔ)上添加mut關(guān)鍵字。
例子

fn main(){let mut arr:[i32;4] = [10,20,30,40];arr[1] = 0;println!("{:?}",arr);
}
輸出結(jié)果如下
[10, 0, 30, 40]

(二)二維數(shù)組
1.指定所有元素
語法格式

let var: [[type; size1]; size2] = [[value1, value2...], ...];

例子

let directions: [[i32; 2]; 4] = [[-1, 0], [0, 1], [0, 1], [1, 0]];

2.指定初始值和長度
語法格式

let var: [[type; size1]; size2] = [[value; size1]; size2];

例子

let directions: [[i32; 2]; 4] = [[0; 2]; 4];

3.省略類型
語法格式

let var = [[value1, value2...], ...];
let var = [[value; size1]; size2];

例子

let directions = [[-1, 0], [0, 1], [0, 1], [1, 0]];
let directions = [[0u8; 4]; 4];

4.可變二維數(shù)組
在上面幾種方式基礎(chǔ)上添加mut

數(shù)組分配在棧上,但Rust中,棧的大小是有限制的。比如Linux下默認(rèn)為8M,Windows下默認(rèn)為2M。這太小了不夠用。我們可以利用Box,將數(shù)組分配到堆上。

二、使用數(shù)組

(一)數(shù)組長度len()
len()用于返回?cái)?shù)組的長度。
例子

fn main() {let arr:[i32;4] = [-1;4];println!("{}",arr.len());let directions: [[i32; 2]; 4] = [[0; 2]; 4];println!("{} {}", directions.len(), directions[0].len());
}
輸出結(jié)果如下
4
4 2

(二)訪問數(shù)組元素

let mut nums1 = [1; 5];
nums1[1] = 4;
println!("{}", nums1[1]);

(三)遍歷數(shù)組
1.使用索引

let mut nums1 = [1; 5];
for i in 0..nums1.len() {println!("{} ", nums1[i]);
}
for i in 0..nums1.len() {nums1[i] = i;
}
println!("{:?}", nums1);

2.直接使用數(shù)組

for num in nums1 {print!("{} ", num);
}
println!();

3.使用數(shù)組的引用

let mut nums1 = [1; 5];
let mut i = 0;
for num in &nums1 {print!("{} ", num);
}
println!();
for num in &mut nums1 {*num = i;i += 1;
}
println!("{:?}", nums1);

4.使用數(shù)組的迭代器
iter()返回一個只讀迭代器

for num in nums1.iter() {print!("{} ", num);
}
println!();

iter_mut()返回一個可寫迭代器

let mut nums1 = [1; 5];
let mut i = 0;
for num in nums1.iter_mut() {*num = i;i += 1;
}
println!("{:?}", nums1);

into_iter()返回一個迭代器,但是轉(zhuǎn)讓所有權(quán)

let mut nums1 = [1; 5];
for num in nums1.into_iter() {print!("{} ", num);
}
println!();

for num in nums1
實(shí)際上等價(jià)于
for num in nums1.into_iter()

5.使用迭代器的enumerate

let mut nums1 = [1; 5];
for (pos, v) in nums1.iter().enumerate() {println!("nums[{}]={}", pos, v);
}
println!("{:?}", nums1);
for (pos, v) in nums1.iter_mut().enumerate() {*v=pos;println!("nums[{}]={}", pos, v);
}
println!("{:?}", nums1);

二維數(shù)組遍歷:
1.使用索引

let mut grid = [[0; 5]; 5];
for i in 0..grid.len() {for j in 0..grid[i].len() {grid[i][j] = j;print!("{} ", grid[i][j]);}println!();
}

2.使用引用

let mut grid = [[0; 5]; 5];
for row in &grid {for col in row {print!("{} ", col);}println!();
}
let mut i = 0;
for row in &mut grid{for col in row {*col = i;i += 1;print!("{} ", col);}println!();
}

3.使用迭代器

let mut grid = [[0; 5]; 5];
for row in grid.iter() {for col in row.iter() {print!("{} ", col);}println!();
}
let mut i = 0;
for row in grid.iter_mut(){for col in row.iter_mut() {*col = i;i += 1;print!("{} ", col);}println!();
}

4.使用迭代器的enumerate

let mut grid = [[0; 5]; 5];
for (i, row) in grid.iter().enumerate() {for (j, col) in row.iter().enumerate() {print!("{}", col);}println!()
}
for (i, row) in grid.iter_mut().enumerate() {for (j, col) in row.iter_mut().enumerate() {*col = 1;}
}

(四)轉(zhuǎn)換數(shù)組

pub fn map<F, U>(self, f: F) -> [U; N]
where
F: FnMut(T) -> U,

返回一個相同長度的數(shù)組,它的元素是由原數(shù)組元素應(yīng)用f函數(shù)得到的。
如果您需要動態(tài)大小的向量,請使用Iterator::map。
關(guān)于性能和棧使用的注意事項(xiàng)
盡量避免在大數(shù)組上使用此方法。還要盡量避免連續(xù)使用map (例如arr.map(…).map(…))。
盡量使用Iterator::map,只有真正需要一個大小相同的新數(shù)組時,才使用[T; N]::map。
例子

let x = [1, 2, 3];
let y = x.map(|v| v + 1);
assert_eq!(y, [2, 3, 4]);
let x = [1, 2, 3];
let mut temp = 0;
let y = x.map(|v| { temp += 1; v * temp });
assert_eq!(y, [1, 4, 9]);
let x = ["Ferris", "Bueller's", "Day", "Off"];
let y = x.map(|v| v.len());
assert_eq!(y, [6, 9, 3, 3]);

(五)數(shù)組排序
因?yàn)閿?shù)組能隱式轉(zhuǎn)換成切片,所以切片的方法,數(shù)組都能使用。
sort()與sort_unstable()
首選sort_unstable,因?yàn)樗萻ort()快,并且不分配輔助內(nèi)存。
例子

let mut v = [-5, 4, 1, -3, 2];
v.sort();
assert!(v == [-5, -3, 1, 2, 4]);

sort_by()與sort_unstable_by()
指定比較函數(shù)
首選sort_unstable_by(),因?yàn)樗萻ort_by()快,并且不分配輔助內(nèi)存。
例子

let mut v = [5, 4, 1, 3, 2];
v.sort_by(|a, b| a.cmp(b));
assert!(v == [1, 2, 3, 4, 5]);
// 反向排序
v.sort_by(|a, b| b.cmp(a));
assert!(v == [5, 4, 3, 2, 1]);

sort_by_key()與sort_unstable_by_key()
指定鍵函數(shù)
首選sort_unstable_by_key(),因?yàn)樗萻ort_by_key()快,并且不分配輔助內(nèi)存。
例子

let mut v = [-5i32, 4, 1, -3, 2];
v.sort_by_key(|k| k.abs());
assert!(v == [1, 2, -3, 4, -5]);

(七)其他常用方法

分割數(shù)組
let (part1, part2) = [1,2,3,4,5].split_at(2);
println!("part1={:?}", part1);//[1,2]
println!("part2={:?}", part2);//[3,4,5]交換數(shù)組元素
let mut arr = [1,2,3,4];
arr.swap(1,2);
println!("arr: {:?}", arr);//[1, 3, 2, 4]逆轉(zhuǎn)數(shù)組
arr.reverse();
println!("arr: {:?}", arr);//[4, 2, 3, 1]//二分查找
let index: Result<usize, usize> = [1,2,3,4,5].binary_search(&4);
//index: Ok(3)
println!("index: {:?}", index);最后一個元素
let last_elem: Option<&i32> = [1,2,3,4,5].last();
//last elem: Some(5)
println!("last elem: {:?}", last_elem);數(shù)組求和
let array: [i32; 10] = [1; 10];
assert_eq!(10, array.iter().sum::<i32>());

(八)數(shù)組作為函數(shù)參數(shù)
數(shù)組可以作為函數(shù)的參數(shù)。而傳遞方式有 傳值傳遞 和 引用傳遞 兩種方式。
傳值傳遞 就是傳遞數(shù)組的一個副本給函數(shù)做參數(shù),函數(shù)對副本的任何修改都不會影響到原來的數(shù)組。
引用傳遞 就是傳遞數(shù)組在內(nèi)存上的位置給函數(shù)做參數(shù),因此函數(shù)對數(shù)組的任何修改都會影響到原來的數(shù)組。

范例:傳值傳遞

fn main() {let arr = [10,20,30];update(arr);println!("Inside main {:?}",arr);
}
fn update(mut arr:[i32;3]){for i in 0..3 {arr[i] = 0;}println!("Inside update {:?}",arr);
}
編譯運(yùn)行結(jié)果如下
Inside update [0, 0, 0]
Inside main [10, 20, 30]

范例2: 引用傳遞

fn main() {let mut arr = [10,20,30];update(&mut arr);println!("Inside main {:?}",arr);
}
fn update(arr:&mut [i32;3]){for i in 0..3 {arr[i] = 0;}println!("Inside update {:?}",arr);
}
編譯運(yùn)行結(jié)果如下
Inside update [0, 0, 0]
Inside main [0, 0, 0]
http://m.risenshineclean.com/news/65576.html

相關(guān)文章:

  • 網(wǎng)站開發(fā)師培訓(xùn)網(wǎng)絡(luò)營銷手段有哪四種
  • 深圳網(wǎng)站開發(fā)優(yōu)化營商環(huán)境 助推高質(zhì)量發(fā)展
  • 建設(shè)一個網(wǎng)站需要提供什么手續(xù)seo網(wǎng)絡(luò)推廣專員
  • 十堰建設(shè)網(wǎng)站首頁無錫seo公司
  • 怎樣查看網(wǎng)站是用什么cms 做的企業(yè)培訓(xùn)課程有哪些
  • 權(quán)重高的網(wǎng)站是幾vue seo優(yōu)化
  • 個人網(wǎng)站頁面設(shè)計(jì)需要那些步驟seo教學(xué)平臺
  • 北京朝陽不限購小戶型天津seo培訓(xùn)
  • 住房和城鄉(xiāng)建設(shè)部網(wǎng)站辦事大廳各大免費(fèi)推廣網(wǎng)站
  • 山東省住房和建設(shè)廳網(wǎng)站百度網(wǎng)址大全免費(fèi)下載
  • 延安免費(fèi)做網(wǎng)站怎么創(chuàng)作自己的網(wǎng)站
  • 設(shè)計(jì)師培訓(xùn)學(xué)費(fèi)長春seo優(yōu)化企業(yè)網(wǎng)絡(luò)躍升
  • 水墨畫風(fēng)格網(wǎng)站網(wǎng)站快速排名互點(diǎn)軟件
  • 做兼職最好的網(wǎng)站杭州百度推廣開戶
  • 5g網(wǎng)絡(luò)快手seo關(guān)鍵詞優(yōu)化
  • 太原網(wǎng)站建設(shè)王道下拉惠整站seo排名要多少錢
  • 修水今日疫情長沙官網(wǎng)seo
  • 東莞微聯(lián)建站網(wǎng)絡(luò)營銷教學(xué)網(wǎng)站
  • 廣告網(wǎng)站設(shè)計(jì)公司好嗎做免費(fèi)推廣的平臺
  • 做網(wǎng)站簡單嗎seo推廣公司招商
  • 嘉興推廣公司seo百度快速排名
  • 設(shè)計(jì)師逛的網(wǎng)站購物網(wǎng)站
  • 網(wǎng)絡(luò)運(yùn)營一個月工資廣州網(wǎng)站快速排名優(yōu)化
  • 網(wǎng)站應(yīng)包括的基本功能和高級功能衡陽百度推廣
  • 做招聘和求職都需要哪些網(wǎng)站站長統(tǒng)計(jì)是什么意思
  • 成都網(wǎng)站建設(shè)公司盈利嗎品牌宣傳策略
  • 汕頭網(wǎng)站建設(shè)制作方案百度網(wǎng)站打開
  • 用c 做網(wǎng)站和數(shù)據(jù)庫方法百度快速優(yōu)化排名軟件
  • 網(wǎng)站后臺信息維護(hù)要怎么做網(wǎng)站模板平臺資源
  • 淘寶聯(lián)盟合作網(wǎng)站api廣告推廣方式