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

类型转换与IO流:C++世界的变形与交互之道

在这里插入图片描述

文章目录

  • 前言
    • 🎄一、类型转换
      • 🎈1.1 隐式类型转换
      • 🎈1.2 显式类型转换
        • 🎁1. C 风格强制类型转换
        • 🎁2. C++ 类型转换操作符
      • 🎈1.3 C++ 类型转换操作符详解
        • 🎁1. `static_cast`
        • 🎁2. `dynamic_cast`
        • 🎁3. `const_cast`
        • 🎁4. `reinterpret_cast`
      • 🎈1.4 类型转换的适用场景对比
      • 🎈1.5 类型转换的注意事项
    • 🎄二、C++IO流
      • 🎈2.1 IO流的分类
        • 🎁1. 标准输入输出流
        • 🎁2. 文件流
        • 🎁3. 字符串流
      • 🎈2.2 基本用法
        • 🎁1. 标准输入输出流
        • 🎁2. 文件流
      • 🎈2.3 常用 IO 流方法
        • 🎁1. 输入流 (`istream`) 的方法
        • 🎁2. 输出流 (`ostream`) 的方法
      • 🎈2.4 文件流的常用操作
      • 🎈2.5 字符串流
        • 🎁1. `std::stringstream` 的基本构造函数
        • 🎁2. 常用操作
          • 🎉a. 写入字符串
          • 🎉b. 读取字符串
          • 🎉c. 重置流内容
          • 🎉d. 添加 `clear()` 的场景
      • 🎈2.6 错误处理
  • 结语


前言

在现代编程中,C++作为一种强大的面向对象编程语言,其灵活性和高效性在开发中得到了广泛应用。类型转换和输入输出流(IO流)是C++语言的两个重要组成部分。前者是数据处理与操作的桥梁,后者是数据交互的核心。掌握这些内容不仅可以提高代码的健壮性,还能显著提升开发效率与代码可读性。本文将深入探讨C++中的类型转换和IO流机制,助您在实际应用中游刃有余。


🎄一、类型转换

C++ 提供了多种类型转换方法,用于将一种类型的对象转换为另一种类型。类型转换可以分为隐式类型转换和显式类型转换(强制类型转换)。C++ 提供了更安全和灵活的类型转换操作符(如 static_castdynamic_cast 等),以替代传统的 C 风格转换。

🎈1.1 隐式类型转换

隐式类型转换由编译器自动完成,当一种类型的数据被赋值或传递给另一种兼容类型的变量时,编译器会自动进行转换。

示例:

#include <iostream>
int main() {int x = 10;double y = x;  // 隐式转换:int -> doublestd::cout << "y = " << y << std::endl;  // 输出:10.0double z = 3.14;int a = z;  // 隐式转换:double -> intstd::cout << "a = " << a << std::endl;  // 输出:3 (精度丢失)return 0;
}

隐式转换注意事项

  1. 数据精度问题:从 double 转换为 int 时会丢失小数部分。
  2. 范围问题:从 long 转换为 short 时可能会导致溢出。

🎈1.2 显式类型转换

显式类型转换是开发者明确告诉编译器需要进行类型转换。C++ 提供了两种方法:

  1. C 风格类型转换
  2. C++ 类型转换操作符
🎁1. C 风格强制类型转换

语法(目标类型) 表达式目标类型(表达式)

示例:

#include <iostream>
int main() {double x = 3.14;int y = (int)x;  // C 风格强制类型转换std::cout << "y = " << y << std::endl;  // 输出:3return 0;
}

缺点

  • 不安全:编译器无法检查转换是否合理。
  • 可读性差:无法通过语法分辨转换的目的。

🎁2. C++ 类型转换操作符

C++ 提供了以下四种类型转换操作符,用于实现更安全、更灵活的显式类型转换:

  1. static_cast
  2. dynamic_cast
  3. const_cast
  4. reinterpret_cast

🎈1.3 C++ 类型转换操作符详解

🎁1. static_cast

功能

  • 编译时类型转换,用于基本类型之间的转换。
  • 父类和子类指针或引用之间的转换(要求类型相关性)。

示例:

#include <iostream>
class Base {};
class Derived : public Base {};int main() {int x = 10;double y = static_cast<double>(x);  // 基本类型转换std::cout << "y = " << y << std::endl;Derived d;Base* basePtr = static_cast<Base*>(&d);  // 子类指针转基类指针return 0;
}

特点

  • 编译器检查类型是否兼容。
  • 无法转换完全无关的类型。

🎁2. dynamic_cast

功能

  • 运行时类型转换,用于多态类型之间的安全转换。
  • 主要用于基类指针或引用转换为派生类指针或引用。

示例:

#include <iostream>class A {
public:// 只有包含虚函数才能转换virtual void f(){}int x;
};class B : public A {
public:int y;
};void func(A* pa) {// pa是指向子类对象B的,转换可以成功,否则失败B* pb = dynamic_cast<B*>(pa);if (pb) {std::cout << "转换成功" << std::endl;pb->x++;pb->y++;}else {std::cout << "转换失败" << std::endl;}
}int main() {// 传入基类对象 aaA aa;func(&aa);//传入派生类对象 bbB bb;func(&bb);return 0;
}

特点

  • 依赖于运行时类型信息(RTTI)。
  • 只适用于含有虚函数的类。

🎁3. const_cast

功能

  • 用于移除或添加 const 限定符。
  • 不能用于转换底层常量性(即实际的常量数据)。

示例:

#include <iostream>int main() {volatile const int n = 10;	// volatile用于告诉编译器:该变量的值可能在程序的控制流之外被改变int* p = const_cast<int*>(&n);(*p)++;std::cout << n;	// 输出11return 0;
}

特点

  • 如果尝试修改实际的常量数据,会导致未定义行为。
  • volatile 告诉编译器:
    • 不要对该变量进行优化。
    • 每次访问变量时都必须从内存中重新读取,而不能使用寄存器中的缓存值。
    • 对变量的写入也必须立即刷新到内存中。

🎁4. reinterpret_cast

功能

  • 用于进行低级别的不相关类型转换。
  • 可以在指针、整数、浮点数之间进行转换。

示例:

#include <iostream>
int main() {int x = 65;char* ptr = reinterpret_cast<char*>(&x);  // 将整数指针转为字符指针std::cout << *ptr << std::endl;  // 输出字符 'A'return 0;
}

特点

  • 最不安全的类型转换,可能导致未定义行为。
  • 通常用于底层编程。

🎈1.4 类型转换的适用场景对比

类型转换操作符适用场景安全性
隐式转换基本类型之间,子类到父类安全
C 风格强制转换任意类型之间的转换,简便但不安全不安全
static_cast编译时类型兼容的转换,如基本类型、父子类指针较安全
dynamic_cast多态类型之间的运行时转换,确保转换合法安全
const_cast添加或移除 const,仅限逻辑常量性有风险
reinterpret_cast不相关类型之间的低级别转换(如指针、整数)不安全

🎈1.5 类型转换的注意事项

  1. 优先使用 C++ 类型转换操作符
    • static_castdynamic_cast 提供了更高的安全性和可读性。
    • 避免使用 C 风格的强制转换。
  2. 小心 const_castreinterpret_cast
    • const_cast 不允许修改实际的常量对象。
    • reinterpret_cast 只能用于底层编程,慎用。
  3. 尽量避免不必要的类型转换
    • 类型转换可能引入性能开销或引发未定义行为,只有在必要时才使用。

🎄二、C++IO流

C++ 中的 IO流(Input/Output Streams) 是一种用于处理输入和输出操作的类库,提供了强大的功能来读写数据。IO流通过标准库中的类(如 istreamostream)实现了对各种设备(如控制台、文件等)的输入输出操作。

🎈2.1 IO流的分类

C++ 中的 IO 流主要分为以下几类:

🎁1. 标准输入输出流
  • std::cin:标准输入流,用于从键盘输入。
  • std::cout:标准输出流,用于输出到屏幕。
  • std::cerr:标准错误流,用于错误消息输出,不带缓冲。
  • std::clog:标准日志流,用于日志输出,带缓冲。
🎁2. 文件流
  • std::ifstream:输入文件流,用于从文件中读取数据。
  • std::ofstream:输出文件流,用于将数据写入文件。
  • std::fstream:文件读写流,可同时读取和写入文件。
🎁3. 字符串流
  • std::istringstream:字符串输入流,从字符串中读取数据。
  • std::ostringstream:字符串输出流,将数据写入字符串。
  • std::stringstream:字符串读写流,可同时读写字符串。

🎈2.2 基本用法

🎁1. 标准输入输出流
#include <iostream>
#include <string>int main() {std::string name;int age;// 输入std::cout << "Enter your name: ";std::cin >> name;std::cout << "Enter your age: ";std::cin >> age;// 输出std::cout << "Hello, " << name << "! You are " << age << " years old." << std::endl;return 0;
}

运行示例:

Enter your name: Alice
Enter your age: 25
Hello, Alice! You are 25 years old.
🎁2. 文件流

写文件:

#include <iostream>
#include <fstream>int main() {std::ofstream outfile("example.txt");  // 打开文件以写入if (outfile.is_open()) {outfile << "Hello, File IO!" << std::endl;outfile.close();  // 关闭文件} else {std::cerr << "Unable to open file for writing." << std::endl;}return 0;
}

读文件:

#include <iostream>
#include <fstream>
#include <string>int main() {std::ifstream infile("example.txt");  // 打开文件以读取if (infile.is_open()) {std::string line;while (std::getline(infile, line)) {std::cout << line << std::endl;  // 输出文件内容}infile.close();  // 关闭文件} else {std::cerr << "Unable to open file for reading." << std::endl;}return 0;
}

🎈2.3 常用 IO 流方法

🎁1. 输入流 (istream) 的方法
  • std::cin.get(): 获取单个字符,包括空格和换行符。
  • std::cin.ignore(): 忽略输入的一个或多个字符。
  • std::cin.peek(): 查看下一个字符而不提取它。
  • std::cin.eof(): 检查是否到达输入流的末尾。
#include <iostream>
int main() {char ch;std::cin.get(ch);  // 获取一个字符std::cout << "You entered: " << ch << std::endl;std::cin.ignore(100, '\n');  // 忽略 100 个字符或直到换行符return 0;
}
🎁2. 输出流 (ostream) 的方法
  • std::cout.put(): 输出单个字符。
  • std::cout.write(): 输出一个字符数组。
  • std::cout.flush(): 强制刷新输出缓冲区。
#include <iostream>
int main() {std::cout.put('A');  // 输出单个字符std::cout.write("Hello, World!", 5);  // 输出前 5 个字符std::cout.flush();  // 刷新缓冲区return 0;
}

🎈2.4 文件流的常用操作

  • open(filename, mode): 打开文件。
  • close(): 关闭文件。
  • is_open(): 检查文件是否成功打开。
  • eof(): 检查是否到达文件末尾。
  • 文件打开模式:
    • std::ios::in:读模式(默认)。
    • std::ios::out:写模式(默认)。
    • std::ios::app:追加模式。
    • std::ios::ate:打开文件并移动到文件末尾。
    • std::ios::binary:以二进制模式打开文件。
#include <iostream>
#include <fstream>int main() {std::fstream file;file.open("example.txt", std::ios::out | std::ios::app);  // 打开文件用于写入和追加if (file.is_open()) {file << "Appending this line to the file.\n";file.close();}return 0;
}

🎈2.5 字符串流

std::stringstream 是 C++ 标准库中的字符串流类,它提供了对内存中字符串的输入、输出和格式化功能。std::stringstream 属于 std::iostream 的派生类,可以像操作文件流或标准输入输出流一样操作字符串。

std::stringstream 常用于:

  1. 将变量格式化为字符串。
  2. 从字符串中解析数据。
  3. 在内存中进行类似文件的流操作。
🎁1. std::stringstream 的基本构造函数
std::stringstream();                      // 默认构造,创建一个空字符串流
std::stringstream(const std::string& str); // 使用指定的字符串初始化
std::stringstream(std::ios_base::openmode mode); // 指定模式初始化
🎁2. 常用操作
🎉a. 写入字符串

使用 << 运算符将数据写入流,或者调用 str() 方法获取流中的字符串。

示例:写入并获取字符串

#include <iostream>
#include <sstream>
#include <string>int main() {std::stringstream ss;ss << "Hello, " << "stringstream! " << 123;std::string result = ss.str();std::cout << "Stream content: " << result << std::endl;return 0;
}

输出:

Stream content: Hello, stringstream! 123

🎉b. 读取字符串

使用 >> 运算符从字符串流中提取数据,或者通过 getline() 方法逐行读取。

示例:从字符串中提取数据

#include <iostream>
#include <sstream>
#include <string>int main() {std::string data = "123 456 789";std::stringstream ss(data);int x, y, z;ss >> x >> y >> z;std::cout << "Parsed numbers: " << x << ", " << y << ", " << z << std::endl;return 0;
}

输出:

Parsed numbers: 123, 456, 789

类型转换:

  • stringstreamoperator>> 会自动将流中的字符串片段转换为目标类型(这里是 int)。
  • 如果目标类型是整数类型,则会从字符串中提取数字并完成 string -> int 的转换。
  • 如果流中的内容无法正确解析为整数,则流状态会标记为失败,后续操作可能会被跳过。

🎉c. 重置流内容
  • 使用 str() 方法设置或获取流内容。
  • 调用 clear() 重置流的状态。

示例:重置流内容

=#include <iostream>
#include <sstream>
#include <string>int main() {std::stringstream ss;ss << "First content";// 获取当前内容std::cout << "Before reset: " << ss.str() << std::endl;// 重置流内容ss.str("New content");ss.clear();std::cout << "After reset: " << ss.str() << std::endl;return 0;
}

输出:

Before reset: First content
After reset: New content

关键点:

  • clear() 是用来重置流的错误状态标志(如 failbiteofbitbadbit)。在流出现错误状态后,继续对其操作可能会失败,clear() 可以清除这些状态,使流回到正常状态。

  • 在没有发生错误的情况下,clear() 不需要调用。

  • 替换内容(str("New content"))不会导致错误状态,因此即使不调用 clear(),流仍然可以正常工作。

🎉d. 添加 clear() 的场景

clear() 在以下场景中是必要的:

  • 如果之前的流操作导致了错误状态,例如读写失败或到达文件末尾(eof())。
  • 需要恢复流的正常状态以继续后续操作。

例如:

#include <iostream>
#include <sstream>
#include <string>int main() {std::stringstream ss("123");int x, y;ss >> x;  // 成功读取 123ss >> y;  // 失败:流已到达末尾,设置了 failbitif (ss.fail()) {std::cout << "Stream failed. Resetting...\n";ss.clear();  // 清除错误状态ss.str("456");  // 替换内容ss >> y;       // 再次读取成功}std::cout << "y: " << y << std::endl;return 0;
}

输出:

Stream failed. Resetting...
y: 456

🎈2.6 错误处理

C++ IO流提供了多种方法来处理输入输出过程中的错误。

  • bad(): 检查流是否因不可恢复错误而失败。
  • fail(): 检查流是否失败。
  • eof(): 检查是否到达文件或输入末尾。
  • clear(): 清除流的错误状态。
#include <iostream>
#include <fstream>int main() {std::ifstream file("nonexistent.txt");  // 打开文件if (!file) {if (file.bad()) {std::cerr << "Error: Irrecoverable error on file stream." << std::endl;} else if (file.fail()) {std::cerr << "Error: Failed to open file (logical error)." << std::endl;} else if (file.eof()) {std::cerr << "Error: End of file reached unexpectedly." << std::endl;}} else {std::cout << "File opened successfully." << std::endl;}return 0;
}

结语

C++中的类型转换为程序赋予了灵活的适应性,而IO流则提供了高效的数据交互方式。这两部分内容在C++开发中不可或缺,它们不仅能够提高程序的性能,还为开发者提供了更多的实现方式和选择。在实际开发中,善用这些特性,能够帮助我们编写出更加高效、可读性强的程序代码。希望通过本文的解析,您对C++类型转换与IO流有了更全面的了解,并能在开发实践中熟练运用。
在这里插入图片描述

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,17的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是17前进的动力!

在这里插入图片描述

相关文章:

类型转换与IO流:C++世界的变形与交互之道

文章目录 前言&#x1f384;一、类型转换&#x1f388;1.1 隐式类型转换&#x1f388;1.2 显式类型转换&#x1f381;1. C 风格强制类型转换&#x1f381;2. C 类型转换操作符 &#x1f388;1.3 C 类型转换操作符详解&#x1f381;1. static_cast&#x1f381;2. dynamic_cast&…...

Pytorch使用手册- TorchVision目标检测微调Tutorial的使用指南(专题十二)

这篇教程的目标是对一个预训练的 Mask R-CNN 模型进行微调,应用于 Penn-Fudan 行人检测与分割数据集。该数据集包含 170 张图像,里面有 345 个行人实例,我们将通过这个教程来演示如何使用 torchvision 中的新特性,训练一个面向自定义数据集的目标检测和实例分割模型。 注意…...

人工智能机器学习算法分类全解析

目录 一、引言 二、机器学习算法分类概述 &#xff08;一&#xff09;基于学习方式的分类 1. 监督学习&#xff08;Supervised Learning&#xff09; 2. 无监督学习&#xff08;Unsupervised Learning&#xff09; 3. 强化学习&#xff08;Reinforcement Learning&#xf…...

Linux 35.6 + JetPack v5.1.4@DeepStream安装

Linux 35.6 JetPack v5.1.4DeepStream安装 1. 源由2. 步骤Step 1 安装Jetpack 5.1.4 L4T 35.6Step 2 安装依赖组件Step 3 安装librdkafkaStep 4 安装 DeepStream SDKStep 5 测试 deepstream-appStep 6 运行 deepstream-app 3. 总结3.1 版本问题3.2 二进制help 4. 参考资料 1. …...

图数据库 | 11、图数据库架构设计——高性能图存储架构(下)

在上篇内容中&#xff0c;老夫着重讲了高性能图存储系统的特点&#xff0c;咱们继续往下讲重点——高性能存储架构的设计思路&#xff01;&#xff01; 2.高性能存储架构设计思路 首先呢&#xff0c;存储架构以及核心数据结构的设计思路通常围绕如下4个维度来进行&#xff1a…...

【HTTP】HTTP协议

一个Web Server就是个服务器软件&#xff08;程序&#xff09;&#xff0c;或者是运行这个服务器软件的硬件&#xff08;计算机&#xff09;&#xff0c;其主要功能是通过HTTP协议与客户端进行通信&#xff0c;来接收&#xff0c;存储&#xff0c;处理来自客户端的HTTP请求&…...

大数据新视界 -- Hive 基于 MapReduce 的执行原理(上)(23 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

SpringBoot源码解析(六):打印Banner

SpringBoot源码系列文章 SpringBoot源码解析(一)&#xff1a;SpringApplication构造方法 SpringBoot源码解析(二)&#xff1a;引导上下文DefaultBootstrapContext SpringBoot源码解析(三)&#xff1a;启动开始阶段 SpringBoot源码解析(四)&#xff1a;解析应用参数args Sp…...

【计算机网络】实验6:IPV4地址的构造超网及IP数据报

实验 6&#xff1a;IPV4地址的构造超网及IP数据报 一、 实验目的 加深对IPV4地址的构造超网&#xff08;无分类编制&#xff09;的了解。 加深对IP数据包的发送和转发流程的了解。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、了解IPV4地址的构造超网…...

easy excel 生成excel 文件

导包 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version> </dependency> 内容 List<类> limspjreport 值; String fileName sdf.format(new Date()) "-…...

Ajax:回忆与节点

一点回忆 面对我的Ajax学习&#xff0c;实现前后端交互&#xff0c;最开始我采用的使用网络寻找intellij IDEA Ultimate破解方法&#xff0c;然后最终成功&#xff0c;然后按照相关教程配置java ee项目&#xff0c;然后中间又去配置了Tomcat服务器&#xff0c;然后又去学习了一…...

Python+OpenCV系列:Python和OpenCV的结合和发展

PythonOpenCV系列&#xff1a;Python和OpenCV的结合和发展 **引言****Python语言的发展****1.1 Python的诞生与发展****1.2 Python的核心特性与优势****1.3 Python的应用领域** **OpenCV的发展****2.1 OpenCV的起源与发展****2.2 OpenCV的功能特性****2.3 OpenCV的应用场景** *…...

Ubuntu20.04 由源码编译安装opencv3.2 OpenCV

Ubuntu20.04 由源码编译安装opencv3.2.0 获取 opencv 及opencv_contrib源代码 创建目录以存放opencv及opencv_contrib源代码 mkdir ~/opencv3.2.0 cd ~/opencv3.2.0获取opencv源代码并切换到对应tag git clone https://github.com/opencv/opencv.git cd opencv git checkou…...

A058-基于Spring Boot的餐饮管理系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…...

RDIFramework.NET CS敏捷开发框架 SOA服务三种访问(直连、WCF、WebAPI)方式

1、介绍 在软件开发领域&#xff0c;尤其是企业级应用开发中&#xff0c;灵活性、开放性、可扩展性往往是项目成功的关键因素。对于C/S项目&#xff0c;如何高效地与后端数据库进行交互&#xff0c;以及如何提供多样化的服务访问方式&#xff0c;是开发者需要深入考虑的问题。…...

Linux——命名管道及日志

linux——进程间通信及管道的应用场景-CSDN博客 文章目录 目录 文章目录 前言 一、命名管道是什么&#xff1f; 理解&#xff1a; 2、编写代码 makefile 管道封装成类&#xff0c;想用中管道时只需要调用实例化 读端 写端 日志 1、日志是什么&#xff1f; 2、日志有什么&#x…...

Flink 常见面试题

1、Flink 的四大特征&#xff08;基石&#xff09; checkpoin基于Chandy-Lamport算法实现了分布式一致性快照提供了一致性的语义 state丰富的StateAPI time实现了Watermark机制&#xff0c;乱序数据处理&#xff0c;迟到数据容忍 window开箱即用的滚动&#xff0c;滑动会话窗口…...

rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable

解决方法&#xff1a; 1、先测量pcf8563电源电压&#xff0c;是否满足要求。 2、pcf8563首次操作。第一次读取pcf8563的时间&#xff0c;未初始化&#xff0c;非法&#xff0c;芯片门槛电压检测配置不合理。使用hwclock命令写入一次&#xff0c;即可解决。 hwclock -f /dev/…...

(简单5步实现)部署本地AI大语言模型聊天系统:Chatbox AI + grok2.0大模型

摘要&#xff1a; 本文将指导您如何部署一个本地AI大语言模型聊天系统&#xff0c;使用Chatbox AI客户端应用和grok-beta大模型&#xff0c;以实现高效、智能的聊天体验。 引言&#xff1a; 由马斯克X-AI发布的Grok 2大模型以其卓越的性能超越了GPT4.0。Grok模型支持超长文本…...

MAUI APP开发蓝牙协议的经验分享:与跳绳设备对接

在开发MAUI应用程序时&#xff0c;蓝牙协议的应用是一个重要的环节&#xff0c;尤其是在需要与外部设备如智能跳绳进行数据交换的场景中。以下是我在开发过程中的一些经验和心得&#xff0c;希望能为你的项目提供帮助。 1. 蓝牙协议基础 蓝牙协议是无线通信的一种标准&#x…...

最新版Node.js下载安装及环境配置教程

目录 初识&#xff1a;Node.js 一、下载&#xff1a;Node.js 二、安装&#xff1a;Node.js 1.下载【node.js】压缩包安装文件 2.解压下载的安装包 3.打开解压的【node-v22.11.0-x64】文件夹 4.双击启动安装程序 5.点击【Next】 6.勾选【I accept the terms in the Lic…...

51c自动驾驶~合集39

我自己的原文哦~ https://blog.51cto.com/whaosoft/12707676 #DiffusionDrive 大幅超越所有SOTA&#xff01;地平线DiffusionDrive&#xff1a;生成式方案或将重塑端到端格局&#xff1f; 近年来&#xff0c;由于感知模型的性能持续进步&#xff0c;端到端自动驾驶受到了来…...

单链表基础操作

文章目录 abstract定义结点结构初始化链表遍历链表求表长查找结点根据序号查找结点根据值查找结点 插入结点首尾位置插入一般位置插入(通用插入)找到尾元素|尾指针相关操作 删除结点 abstract 单链表是一种简单的动态数据结构&#xff0c;它由一系列结点组成&#xff0c;每个结…...

Asp.net MVC在VSCore中的页面的增删改查(以Blog项目为例),用命令代码

在VSCore中的页面的增删改查(以Blog项目为例) 1.创建项目&#xff08;无解决方案&#xff09;复杂项目才需要 dotnet new mvc -o Blog2.控制器 BlogsController.cs 控制器&#xff08;Controller&#xff09;名字和视图&#xff08;View&#xff09;中的文件名要一模一样 u…...

【Leecode】Leecode刷题之路第66天之加一

题目出处 66-加一-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 66-加一-官方解法 方法1&#xff1a;找出最长的后缀9 思路&#xff1a; 代码示例&#xff1a;&#xff08;Java&#…...

使用 VLC 在本地搭建流媒体服务器 (详细版)

提示&#xff1a;详细流程 避坑指南 Hi~&#xff01;欢迎来到碧波空间&#xff0c;平时喜欢用博客记录学习的点滴&#xff0c;欢迎大家前来指正&#xff0c;欢迎欢迎~~ ✨✨ 主页&#xff1a;碧波 &#x1f4da; &#x1f4da; 专栏&#xff1a;音视频 目录 借助VLC media pl…...

Ubuntu 常用解压与压缩命令

.zip文件 unzip FileName.zip # 解压 zip DirName.zip DirName # 将DirName本身压缩 zip -r DirName.zip DirName # 压缩&#xff0c;递归处理&#xff0c;将指定目录下的所有文件和子目录一起压缩 zip DirName.zip DirName 行为&#xff1a; 只压缩 DirName 目录本身&#xff…...

【深度学习】四大图像分类网络之AlexNet

AlexNet是由Alex Krizhevsky、Ilya Sutskever&#xff08;均为Hinton的学生&#xff09;和Geoffrey Hinton&#xff08;被誉为”人工智能教父“&#xff0c;首先将反向传播用于多层神经网络&#xff09;在2012年ImageNet图像分类竞赛中提出的一种经典的卷积神经网络。AlexNet在…...

Day1——GitHub项目共同开发

MarkDowm解释 Markdown是一种轻量级标记语言&#xff0c;它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成结构化的HTML代码。Markdown的目的是让文档的编写和阅读变得更加容易&#xff0c;同时也不失HTML的强大功能。以下是Markdown的一些基本概念和用法&a…...

基于PHP的香水销售系统的设计与实现

摘 要 时代科技高速发展的背后&#xff0c;也带动了经济的增加&#xff0c;人们对生活质量的要求也不断提高。香水作为一款在人际交往过程中&#xff0c;给对方留下良好地第一印象的产品&#xff0c;在生活中也可以独自享受其为生活带来的点缀。目前香水市场体量庞大&#xff…...

网站开发视频会议插件/搜狐视频

http://www.cnblogs.com/gavincome/articles/1212960.html转载于:https://www.cnblogs.com/Yjianyong/archive/2010/06/03/1751055.html...

php源码网站建设教程/电商网站开发

可以将网站集、网站、列表、列表项数据在站点间&#xff08;或服务器间&#xff09;进行复制&#xff0c;使用了SharePont的Content Migration API。点击查看文章来源:http://blog.joycode.com/kaneboy/archive/2007/12/06/112342.aspx 转载于:https://www.cnblogs.com/kentpow…...

wordpress添加水印有必要/东莞做网站哪家公司好

垂直居中是一个历史悠久的大问题&#xff0c;要做到兼容所有浏览器少不了要花点时间&#xff0c;网上也流传了很多解决方案&#xff0c;但没发现比我现在用的方案更完美&#xff0c;至少在我的项目是如此。 项目中要用到垂直居中而碰到兼容性问题的&#xff0c;一般都是以下几种…...

企业公司网页/seo网络推广公司

安装PyCharm 官网下载压缩包解压缩进入压缩目录&#xff0c;运行pycharm.sh 安装MySQL sudo apt-get install mysql-server 无法通过apt安装&#xff0c;应该是兼容性问题 sudo apt install mysql-client 安装client端 sudo apt install libmysqlclient-dev 安装依赖 n…...

重庆网上制作网站/优化公司网站排名

2019独角兽企业重金招聘Python工程师标准>>> uva online上的第一个题&#xff1a;对一个正整数n(0<n<1000000)&#xff0c;做如下处理: 若n1,退出;若n为奇数&#xff0c;则使n3n1;若n为偶数&#xff0c;nn/2。n从开始输入到变为1的过程中变化值的个数称为n的c…...

企业网站建设费/window优化大师

Valentines Day 在互联网高度发达的今天&#xff0c;通过智能手机看电影&#xff0c;追剧已成为时下很多人在闲暇时的一种娱乐方式。大家普遍使用主流的几大视频网站如&#xff1a;爱~艺&#xff0c;优~酷视频&#xff0c;腾~讯视频等&#xff0c;众所周知&#xff0c;电视剧尚…...