当前位置: 首页 > news >正文

有没有做软件的网站网络服务

有没有做软件的网站,网络服务,广州好的网站建设,服务器网站崩溃文章目录 一、元组(tuple)1.元组定义2.元组使用解构索引 3.元组修改非可变元组可变元组类型不一致 二、数组1.数组不可变数组定义可变数组定义数组使用数组修改数组的遍历 2.动态数组-向量(Vector)向量定义向量遍历向量追加向量插…

文章目录

  • 一、元组(tuple)
    • 1.元组定义
    • 2.元组使用
      • 解构
      • 索引
    • 3.元组修改
      • 非可变元组
      • 可变元组
      • 类型不一致
  • 二、数组
    • 1.数组
      • 不可变数组定义
      • 可变数组定义
      • 数组使用
      • 数组修改
      • 数组的遍历
    • 2.动态数组-向量(Vector)
      • 向量定义
      • 向量遍历
      • 向量追加
      • 向量插入
      • 向量删除
        • remove方法
        • pop方法-删除最好一个元素
        • truncate方法-缩减向量
        • clear方法-清空向量
        • drain方法-删除范围内向量
      • 向量排序
        • sort方法
        • sort_by方法
      • 逆转向量


Rust官方文档

针对集合Rust提供了两种复合数据类型,元组和数组。

一、元组(tuple)

元组(tuple)是一种复合数据类型,可以包含不同类型的元素,但一旦定义,元组长度不可变的。

1.元组定义

# 标准定义
fn main() {let tup: (i32, f64, u8, &str) = (500, 6.4, 1, "hello");
}
# 也可省略类型
fn main() {let tup= (500, 6.4, 1, "hello");
}

2.元组使用

Rust中使用元组数据有两种方法。

  • 解构 即将一个元组拆成多个部分,每个部分赋值给一个变量
  • 索引 即使用’.'配合索引进行使用

解构

fn main() {let tup: (i32, f64, u8, &str) = (500, 6.4, 1, "hello");let (a,b,c,d) = tup;println!("a={0},b={1},c={2},d={3}",a,b,c,d);
}
$cargo run helloCompiling hello v0.1.0 (/home/kali/Desktop/ctf/script/RustPro/hello)Finished dev [unoptimized + debuginfo] target(s) in 0.34sRunning `target/debug/hello hello`
a=500,b=6.4,c=1,d=hello

索引

fn main() {let tup: (i32, f64, u8, &str) = (500, 6.4, 1, "hello");println!("a={0},b={1},c={2},d={3}",tup.0,tup.1,tup.2,tup.3);
}
$argo run helloCompiling hello v0.1.0 (/home/kali/Desktop/ctf/script/RustPro/hello)Finished dev [unoptimized + debuginfo] target(s) in 0.31sRunning `target/debug/hello hello`
a=500,b=6.4,c=1,d=hello

3.元组修改

理论上元组是不能进行修改的,但是如果定义为可变元组,则可以修改元组内容,但修改值的类型必须和定义时一致。

特别注意:元组长度始终无法修改

非可变元组


fn main() {let  tup: (i32, f64, u8, &str) = (500, 6.4, 1, "hello");println!("value:{}",tup.0);tup.0 = 1000;println!("After:{}",tup.0);
}$cargo run helloCompiling hello v0.1.0 (/home/kali/Desktop/ctf/script/RustPro/hello)
error[E0594]: cannot assign to `tup.0`, as `tup` is not declared as mutable--> src/main.rs:4:5|
4 |     tup.0 = 1000;|     ^^^^^^^^^^^^ cannot assign|
help: consider changing this to be mutable|
2 |     let  mut tup: (i32, f64, u8, &str) = (500, 6.4, 1, "hello");|          +++For more information about this error, try `rustc --explain E0594`.
error: could not compile `hello` (bin "hello") due to previous error

可变元组

fn main() {let mut tup: (i32, f64, u8, &str) = (500, 6.4, 1, "hello");println!("value:{}",tup.0);tup.0 = 1000;println!("After:{}",tup.0);
}
$cargo run helloCompiling hello v0.1.0 (/home/kali/Desktop/ctf/script/RustPro/hello)Finished dev [unoptimized + debuginfo] target(s) in 0.22sRunning `target/debug/hello hello`
value:500
After:1000

类型不一致

fn main() {let mut tup: (i32, f64, u8, &str) = (500, 6.4, 1, "hello");println!("value:{}",tup.0);tup.0 = "what?";println!("After:{}",tup.0);
}
$cargo run helloCompiling hello v0.1.0 (/home/kali/Desktop/ctf/script/RustPro/hello)
error[E0308]: mismatched types--> src/main.rs:4:13|
4 |     tup.0 = "what?";|     -----   ^^^^^^^ expected `i32`, found `&str`|     ||     expected due to the type of this bindingFor more information about this error, try `rustc --explain E0308`.
error: could not compile `hello` (bin "hello") due to previous error

二、数组

目前据我所知,Rust中可以称为数组的有可变数组、不可变数组和向量.

  • 数组只能是单一数据类型的合集,比元组多了遍历的功能
  • 向量与数组一样,是单一数据类型的合计,但是比数组强大太多,具有增、删、插入、排序等操作

1.数组

不可变数组定义

# 标准定义方法
fn main() {let a: [i32; 5] = [1, 2, 3, 4, 5];
}=> a =[1, 2, 3, 4, 5]
# 简化类型定义方法
fn main() {let a = [1, 2, 3, 4, 5];
}=> a =[1, 2, 3, 4, 5]
# 相同初始值定义方法
fn main() {let a = [3; 5];
}=> a =[3, 3, 3, 3, 3]

可变数组定义

定义方法与不可变数组一致,只是加了mut关键字

fn main() {let mut v: [i32; 5] = [3;5];
}=> a =[3, 3, 3, 3, 3]

数组使用

可以利用数组名[下标]的方式对数组内容进行使用,数组内下标从0计算。

fn main() {  let array = [1, 2, 3, 4, 5];  println!("Second value:{:?}", array[1]);  
}$cargo run helloCompiling hello v0.1.0 (/home/kali/Desktop/ctf/script/RustPro/hello)Finished dev [unoptimized + debuginfo] target(s) in 0.24sRunning `target/debug/hello hello`
Second value:2

数组修改

fn main() {  let mut array = [1, 2, 3, 4, 5];  println!("value :{:?}", array);  array[2] = 100;println!("After :{:?}", array);  
}$cargo run helloCompiling hello v0.1.0 (/home/kali/Desktop/ctf/script/RustPro/hello)Finished dev [unoptimized + debuginfo] target(s) in 0.22sRunning `target/debug/hello hello`
value :[1, 2, 3, 4, 5]
After :[1, 2, 100, 4, 5]

数组的遍历

# 值遍历
fn main() {  let array = [1, 2, 3, 4, 5];  for i in array{println!("{}",i);}
}$cargo run helloCompiling hello v0.1.0 (/home/kali/Desktop/ctf/script/RustPro/hello)Finished dev [unoptimized + debuginfo] target(s) in 0.24sRunning `target/debug/hello hello`
1
2
3
4
5# 下标遍历
fn main() {  let array = [1, 2, 3, 4, 5];  for i in 0..5{println!("{}",array[i]);}
}$cargo run helloCompiling hello v0.1.0 (/home/kali/Desktop/ctf/script/RustPro/hello)Finished dev [unoptimized + debuginfo] target(s) in 0.21sRunning `target/debug/hello hello`
1
2
3
4
5

2.动态数组-向量(Vector)

Rust中的向量(Vector)是一种动态数组,它可以存储相同类型的元素,并且其大小可以在运行时增长或缩小。

向量定义

let mut v1 = Vec::new(); // 创建一个空的向量  
let v2 = vec![1, 2, 3]; // 创建一个包含初始元素的向量

向量遍历

fn main() {  let v = vec![1, 2, 3];  for i in &v {  println!("{}", i);  }
}

向量追加

 fn main() {  let mut v = Vec::new();v.push(1);v.push(2);v.push(3);println!("{:?}",v);
}$cargo run helloFinished dev [unoptimized + debuginfo] target(s) in 0.00sRunning `target/debug/hello hello`
[1, 2, 3]

向量插入

fn main() {  let mut vec = vec![1, 2, 4, 5];  vec.insert(2, 3); // 在索引2的位置插入元素3  println!("{:?}", vec);
}$cargo run helloCompiling hello v0.1.0 (/home/kali/Desktop/ctf/script/RustPro/hello)Finished dev [unoptimized + debuginfo] target(s) in 0.26sRunning `target/debug/hello hello`
[1, 2, 3, 4, 5]

向量删除

remove方法
fn main() {  let mut vec = vec![1, 2, 3, 4, 5];  let removed_element = vec.remove(2); // 删除索引2处的元素  println!("Removed element: {}", removed_element); // 输出: Removed element: 3  println!("{:?}", vec); // 输出: [1, 2, 4, 5]
}
pop方法-删除最好一个元素
fn main() {  let mut vec = vec![1, 2, 3];vec.pop();println!("{:?}", vec); // 输出: [1, 2]
}
truncate方法-缩减向量
fn main() {  let mut vec = vec![1, 2, 3, 4, 5];  vec.truncate(3); // 缩减向量的大小为3  println!("{:?}", vec); // 输出: [1, 2, 3]
}
clear方法-清空向量
fn main() {  let mut vec = vec![1, 2, 3, 4, 5];  vec.clear(); // 删除所有元素  println!("{:?}", vec); // 输出: []
}
drain方法-删除范围内向量
fn main() {  let mut vec = vec![1, 2, 3, 4, 5];  let drained: Vec<_> = vec.drain(1..3).collect(); // 删除索引1到2的元素(不包括3)并收集它们  println!("Drained elements: {:?}", drained); // 输出: Drained elements: [2, 3]  println!("{:?}", vec); // 输出: [1, 4, 5]
}

向量排序

sort方法
fn main() {  let mut numbers = vec![5, 2, 9, 1, 5, 6];  numbers.sort();  println!("{:?}", numbers); // 输出: [1, 2, 5, 5, 6, 9]
}
sort_by方法
# 升序
fn main() {  let mut numbers = vec![5, 2, 9, 1, 5, 6];  numbers.sort_by(|a, b| a.cmp(b));  println!("{:?}", numbers); // 输出: [1, 2, 5, 5, 6, 9]
}
# 降序
fn main() {  let mut numbers = vec![5, 2, 9, 1, 5, 6];  numbers.sort_by(|a, b| b.cmp(a));  println!("{:?}", numbers); // 输出: [9, 6, 5, 5, 2, 1]
}

逆转向量

fn main() {  let mut numbers = vec![1, 2, 3, 4, 5];  numbers.reverse();  println!("{:?}", numbers); // 输出: [5, 4, 3, 2, 1]
}
http://www.rdtb.cn/news/22621.html

相关文章:

  • 申请域名之后如何做网站百度官方网站入口
  • 网站设计论文参考文献武汉官网优化公司
  • 无锡自助建站网站贵港网站seo
  • 重庆建设工程信息网网站学it什么培训机构好
  • 委托 网站开发 进什么费用国外搜索引擎排名百鸣
  • 苏州无名网络科技有限公司河北seo基础入门教程
  • 中英文网站建设的差别西安seo网站管理
  • 满城网站建设高端网站建设公司排名
  • 第三方电子商务平台有哪些郑州seo优化培训
  • php做网站首页修改网站优化排名软件
  • 做网站必须有站点吗宁波网站制作优化服务公司
  • 网站定制开发与模版代运营公司排名
  • 网站建设发专业人才培养方案郑州免费做网站
  • 自己做局域网网站的流程seo营销技巧
  • 益阳有专做网站的吗手机优化
  • 青岛网站建设-中国互联百度一下你就知道官方
  • 如何选择企业网站开发优化网站快速排名软件
  • 如何减少网站建设中的错误什么是网站优化
  • wdcp装wordpress502焦作网站seo
  • 手机能访问电脑上自己做的网站吗网络建站优化科技
  • 用c语言可以做网站吗百度小程序seo
  • 哪个网站做图书广告好今天刚刚的最新新闻
  • 网站设计应该怎么做重庆百度总代理
  • 模块化建站工具百度提交网站
  • 内江如何做百度的网站四川企业seo推广
  • 重庆旅游网站建设公司一个新产品怎么推广
  • wordpress博客字体seo深圳网络推广
  • 苏州网站建设2万起百度公司地址在哪里
  • 西宁公司网站建设网站收录工具
  • 七米网站建设手机百度网盘网页版登录入口