C++11语法及库详解
目录
一、c++11语法
1. 自动类型推导 (auto)
2. 基于范围的 for 循环
3. Lambda 表达式
4. 智能指针
5. 右值引用和移动语义
6. nullptr 关键字
7. constexpr 关键字
8. 初始化列表
9. std::thread 多线程支持
10. std::function 和 std::bind
11. std::unordered_map 和 std::unordered_set
12. std::array
13. std::tuple
14. std::chrono 时间库
15. override 和 final 关键字
二、c++11库
总结
一、c++11语法
1. 自动类型推导 (auto
)
C++11 引入了 auto
关键字,用于自动推导变量的类型。
auto x = 10; // x 的类型被推导为 int
auto y = 3.14; // y 的类型被推导为 double
auto z = "hello"; // z 的类型被推导为 const char*
- 优点:简化代码,尤其是在处理复杂类型(如迭代器)时。
- 注意:
auto
不能用于函数参数或类成员变量的声明。
2. 基于范围的 for
循环
C++11 提供了更简洁的遍历容器的方式。
std::vector<int> vec = {1, 2, 3, 4};
for (auto& val : vec) {val *= 2; // 修改容器中的值
}
Copy
- 优点:避免手动管理迭代器,代码更简洁。
- 注意:遍历时默认是值传递,如果需要修改容器中的值,需使用引用(
auto&
)。
3. Lambda 表达式
Lambda 表达式允许在代码中定义匿名函数。
auto add = [](int a, int b) { return a + b; };
int result = add(3, 4); // result = 7
- 捕获列表:
[]
:不捕获任何外部变量。[&]
:以引用方式捕获所有外部变量。[=]
:以值方式捕获所有外部变量。[&x, y]
:混合捕获。
- 优点:简化代码,尤其是在需要传递函数对象时。
4. 智能指针
C++11 引入了智能指针,用于自动管理动态内存,避免内存泄漏。
std::unique_ptr
:独占所有权的智能指针。
std::unique_ptr<int> ptr(new int(10));
std::shared_ptr
:共享所有权的智能指针。
std::shared_ptr<int> ptr1 = std::make_shared<int>(10);
std::shared_ptr<int> ptr2 = ptr1; // 共享所有权
std::weak_ptr
:弱引用,用于解决shared_ptr
的循环引用问题。、
std::weak_ptr<int> wptr = ptr1;
- 优点:自动管理内存,减少手动
delete
的错误。
5. 右值引用和移动语义
C++11 引入了右值引用(&&
)和移动语义,用于优化资源管理。
- 右值引用:
int&& rref = 10; // 右值引用
- 移动语义:
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = std::move(v1); // 移动 v1 的资源到 v2
- 优点:避免不必要的拷贝,提高性能。
-
左值拷贝为深拷贝
右值拷贝将将亡值移动拷贝;将将亡值的数据给继承者,然后自己销毁
左值move以后,左值将会被释放
左值引用减少了拷贝,左值引用传参,传引用返回
函数内的局部变量不能用引用返回
6. nullptr
关键字
C++11 引入了 nullptr
,用于替代 NULL
,表示空指针。
int* ptr = nullptr; // 更安全的空指针表示
- 优点:避免
NULL
可能引起的类型歧义。
7. constexpr
关键字
constexpr
用于声明编译时常量或常量表达式。
constexpr int square(int x) {return x * x;
}
int arr[square(3)]; // 编译时计算
- 优点:提高性能,允许在编译时进行计算。
8. 初始化列表
C++11 引入了统一的初始化语法。
std::vector<int> vec = {1, 2, 3, 4}; // 初始化列表
int arr[]{1, 2, 3}; // 数组初始化
- 优点:简化初始化代码,避免歧义。
9. std::thread
多线程支持
C++11 提供了标准的多线程库。
#include <thread>
void task() {std::cout << "Hello from thread!\n";
}
int main() {std::thread t(task);t.join(); // 等待线程结束return 0;
}
- 优点:标准化多线程编程,避免平台依赖。
10. std::function
和 std::bind
std::function
:用于存储可调用对象(函数、Lambda、函数对象等)。std::function<int(int, int)> func = [](int a, int b) { return a + b; }; int result = func(3, 4); // result = 7
std::bind
:用于绑定函数参数。auto add = std::bind([](int a, int b) { return a + b; }, std::placeholders::_1, 10); int result = add(5); // result = 15
- 优点:增强函数的灵活性。
11. std::unordered_map
和 std::unordered_set
C++11 引入了基于哈希表的无序容器。
std::unordered_map<std::string, int> map = {{"apple", 1}, {"banana", 2}};
std::unordered_set<int> set = {1, 2, 3};
- 优点:提供更高效的查找性能(平均 O(1) 时间复杂度)。
12. std::array
C++11 提供了固定大小的数组容器。
std::array<int, 3> arr = {1, 2, 3};
- 优点:比原生数组更安全,支持迭代器和标准库算法。
13. std::tuple
std::tuple
用于存储多个不同类型的值。
std::tuple<int, double, std::string> t(1, 3.14, "hello");
int x = std::get<0>(t); // x = 1
- 优点:简化多值返回的场景。
14. std::chrono
时间库
C++11 提供了标准的时间库。
#include <chrono>
auto start = std::chrono::high_resolution_clock::now();
// 执行一些操作
auto end = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
std::cout << "Time taken: " << duration.count() << " ms\n";
- 优点:提供高精度的时间测量。
15. override
和 final
关键字
override
:显式标记重写虚函数。class Base { public:virtual void func() {} }; class Derived : public Base { public:void func() override {} // 显式标记重写 };
final
:禁止类被继承或函数被重写。class Base final {}; // 禁止继承
- 优点:提高代码的可读性和安全性。
二、c++11库
1. 智能指针库 (<memory>
)
C++11 引入了智能指针,用于自动管理动态内存,避免内存泄漏。
std::unique_ptr
:独占所有权的智能指针。std::unique_ptr<int> ptr(new int(10));
std::shared_ptr
:共享所有权的智能指针。std::shared_ptr<int> ptr1 = std::make_shared<int>(10); std::shared_ptr<int> ptr2 = ptr1; // 共享所有权
std::weak_ptr
:弱引用,用于解决shared_ptr
的循环引用问题。std::weak_ptr<int> wptr = ptr1;
std::make_shared
和std::make_unique
(C++14):更安全地创建智能指针。auto ptr = std::make_shared<int>(10);
2. 多线程库 (<thread>
, <mutex>
, <condition_variable>
, <future>
)
C++11 提供了标准的多线程支持。
std::thread
:创建和管理线程。#include <thread> void task() {std::cout << "Hello from thread!\n"; } int main() {std::thread t(task);t.join(); // 等待线程结束return 0; }
std::mutex
:互斥锁,用于保护共享资源。std::mutex mtx; mtx.lock(); // 临界区 mtx.unlock();
std::lock_guard
和std::unique_lock
:RAII 风格的锁管理。std::lock_guard<std::mutex> lock(mtx); // 自动解锁
std::condition_variable
:线程间同步。std::condition_variable cv; cv.notify_one(); // 唤醒一个等待线程
std::future
和std::promise
:异步操作和结果传递。std::promise<int> p; std::future<int> f = p.get_future(); p.set_value(42); // 设置结果 int result = f.get(); // 获取结果
3. 时间库 (<chrono>
)
C++11 提供了高精度的时间库。
std::chrono::system_clock
:系统时钟。std::chrono::steady_clock
:单调时钟。std::chrono::high_resolution_clock
:高精度时钟。- 示例:
auto start = std::chrono::high_resolution_clock::now(); // 执行一些操作 auto end = std::chrono::high_resolution_clock::now(); auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start); std::cout << "Time taken: " << duration.count() << " ms\n";
4. 随机数库 (<random>
)
C++11 提供了更强大的随机数生成工具。
std::mt19937
:Mersenne Twister 随机数生成器。std::uniform_int_distribution
和std::uniform_real_distribution
:均匀分布。- 示例:
std::mt19937 rng(std::random_device{}()); std::uniform_int_distribution<int> dist(1, 100); int random_number = dist(rng); // 生成 1 到 100 的随机数
5. 正则表达式库 (<regex>
)
C++11 引入了正则表达式支持。
std::regex
:正则表达式对象。std::smatch
:匹配结果。- 示例:
std::string text = "Hello, 123 world!"; std::regex pattern(R"(\d+)"); // 匹配数字 std::smatch matches; if (std::regex_search(text, matches, pattern)) {std::cout << "Found: " << matches.str() << "\n"; }
6. 无序容器 (<unordered_map>
, <unordered_set>
)
C++11 引入了基于哈希表的无序容器。
std::unordered_map
:无序映射。std::unordered_map<std::string, int> map = {{"apple", 1}, {"banana", 2}};
std::unordered_set
:无序集合。std::unordered_set<int> set = {1, 2, 3};
- 优点:提供更高效的查找性能(平均 O(1) 时间复杂度)。
7. 元组库 (<tuple>
)
C++11 提供了元组(std::tuple
),用于存储多个不同类型的值。
- 示例:
std::tuple<int, double, std::string> t(1, 3.14, "hello"); int x = std::get<0>(t); // x = 1
- 优点:简化多值返回的场景。
8. 函数对象库 (<functional>
)
C++11 增强了函数对象和函数包装器的支持。
std::function
:存储可调用对象。std::function<int(int, int)> func = [](int a, int b) { return a + b; }; int result = func(3, 4); // result = 7
std::bind
:绑定函数参数。auto add = std::bind([](int a, int b) { return a + b; }, std::placeholders::_1, 10); int result = add(5); // result = 15
9. 数组容器 (<array>
)
C++11 提供了固定大小的数组容器 std::array
。
- 示例:
std::array<int, 3> arr = {1, 2, 3};
- 优点:比原生数组更安全,支持迭代器和标准库算法。
10. 原子操作库 (<atomic>
)
C++11 提供了原子操作支持,用于无锁编程。
std::atomic
:原子类型。std::atomic<int> counter(0); counter.fetch_add(1); // 原子操作
11. 类型特征库 (<type_traits>
)
C++11 提供了类型特征支持,用于编译时类型检查。
std::is_integral
:检查是否为整数类型。static_assert(std::is_integral<int>::value, "Not an integral type");
std::enable_if
:条件编译。template<typename T, typename = std::enable_if_t<std::is_integral<T>::value>> void func(T x) {}
12. 初始化列表支持 (<initializer_list>
)
C++11 引入了初始化列表支持。
- 示例:
std::vector<int> vec = {1, 2, 3, 4}; // 初始化列表
总结
C++11 引入了许多现代编程语言的特性,极大地提升了 C++ 的表达能力和开发效率。掌握这些特性可以帮助开发者编写更高效、更安全的代码。
C++11 的标准库扩展极大地增强了语言的功能性,提供了更现代化的工具和组件。这些库组件与语言特性相结合,使得 C++11 成为一个更强大、更高效的编程语言版本。
相关文章:
C++11语法及库详解
目录 一、c11语法 1. 自动类型推导 (auto) 2. 基于范围的 for 循环 3. Lambda 表达式 4. 智能指针 5. 右值引用和移动语义 6. nullptr 关键字 7. constexpr 关键字 8. 初始化列表 9. std::thread 多线程支持 10. std::function 和 std::bind 11. std::unordered_map…...
数据库,数据表的增删改查操作
一.数据库的基本操作 (1)创建数据库 创建数据库就是在数据库系统中划分一块存储数据的空间,方便数据的分配、放置和管理。在MySQL中使用CREATE DATABASE命令创建数据库,语法格式如下: CREATE DATABASE数据库名称; 注:…...
Python——批量图片转PDF(GUI版本)
目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专…...
RocketMQ面试题:原理部分
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
中间件-安装Minio-集成使用(ubantu-docker)
目录 1、安装docer 2、运行以下命令拉取MinIO的Docker镜像 3、检查当前所有Docker下载的镜像 4、创建目录 5、创建Minio容器并运行 6、SDK操作 FileUploader.java 1、安装docer 参考这篇:Linux安装Docker 2、运行以下命令拉取MinIO的Docker镜像 docker pull…...
vue3: const一个function怎么写呢?
问: 用ref或者reactive定一个一个const refCharts ref(function xxx (config){ xxxxx,xxxxx xxxx,xxxx })请问怎么写? 回答: 在 Vue 3 中,ref 和 reactive 是两种常用的响应式数据定义方式。ref 用于定义单个响应式对象或原始值…...
【JVM详解三】垃圾回收机制
一、对象是否存活 强引用:Object obj new Object(); 只要强引用还在,垃圾收集器永远不会回收掉被引用的对象。在不用对象的时将引用赋值为 null,能够帮助垃圾回收器回收对象。比如 ArrayList 的 clear() 方法实现。软引用(SoftRe…...
dbeaver 安装之后出现mysql连接异常问题
1.手动下载mysql驱动程序 参考文档DBeaver连接mysql驱动下载失败怎么办?-CSDN博客 2.添加对应的下载程序到dbeaver 【DBeaver】缺少mysql驱动_dbeaver连接mysql缺少驱动-CSDN博客 配置mysql 地址端口账户等即可使用...
Android Studio历史版本下载
Android Studio历史版本下载 历史版本所在网站: https://developer.android.google.cn/studio/archive 等待加载 1、(需要点击switch to english)然后出现Terms and conditions 2、滑到最下面,点击I agree to the terms,之后才会…...
【每日一题 | 2025】2.3 ~ 2.9
个人主页:GUIQU. 归属专栏:每日一题 文章目录 1. 【2.3】P8784 [蓝桥杯 2022 省 B] 积木画2. 【2.4】P8656 [蓝桥杯 2017 国 B] 对局匹配3. 【2.5】[ABC365D] AtCoder Janken 34. 【2.6】P8703 [蓝桥杯 2019 国 B] 最优包含5. 【2.7】P8624 [蓝桥杯 2015…...
国产编辑器EverEdit - 迷你查找
1 迷你查找 1.1 应用场景 某些场景下,用户不希望调出复杂的查找对话框,此时可以使用迷你查找窗口。 1.2 使用方法 选择主菜单查找 -> 迷你查找,或使用快捷键Ctrl Alt F,会在右上角弹出迷你查找窗口,如下图所示…...
制药行业 BI 可视化数据分析方案
一、行业背景 随着医药行业数字化转型的深入,企业积累了海量的数据,包括销售数据、生产数据、研发数据、市场数据等。如何利用这些数据,挖掘其价值,为企业决策提供支持,成为医药企业面临的重大挑战。在当今竞争激烈的…...
第40天:Web开发-JS应用VueJS框架Vite构建启动打包渲染XSS源码泄露代码审计
#知识点 1、安全开发-VueJS-搭建启动&打包安全 2、安全开发-VueJS-源码泄漏&代码审计 一、Vue搭建创建项目启动项目 1、Vue 框架搭建->基于nodejs搭建,安装nodejs即可 参考:https://cn.vuejs.org/ 已安装18.3或更高版本的Node.js 2、Vue 创建…...
2.10学习总结
今天接着看了数据结构,但是跟指针有关的看不懂(万恶的指针),写了考试的补题。 #include <stdio.h> #include <stdlib.h> int a[1000005]; int main() {int n,i,x0;scanf("%d",&n);for(i1;i<n;i){x;i…...
MySQL 中可以通过添加主键来节省磁盘空间吗?(译文)
从历史上看,MySQL 不需要在表上定义显式主键,直到今天默认都是这样。不过,这种要求是通过两种复制方法施加的:组复制和 Percona XtraDB 集群 (PXC),默认情况下不允许使用没有主键的表。对于缺少…...
Django在终端创建项目(pycharm Windows)
1.选择目录 选择或新建一个文件夹,作为项目保存的地方 2.右键在终端打开 3.确定django-admin.exe安装位置 找到自己安装django时,django-admin.exe安装的位置,例如 4.运行命令 使用django-admin.exe的绝对路径,在刚才打开的终端…...
IDEA接入DeepSeek
IDEA 目前有多个途径可以接入deepseek,比如CodeGPT或者Continue,这里借助CodeGPT插件接入,CodeGPT目前用的人最多,相对更稳定 一、安装 1.安装CodeGPT idea插件市场找到CodeGPT并安装 2.创建API Key 进入deepseek官网…...
Linux 内核自旋锁spinlock(二)--- ticket spinlock
文章目录 前言一、ticket spinlock二、源码分析2.1 spin_lock_init2.2 spin_lock2.2 spin_unlock 参考资料 前言 自旋锁是 Linux 内核中最底层的互斥机制。因此,它们对内核的安全性和性能有着巨大的影响,因此对各种(特定架构的)自…...
Elixir语言的计算机基础
Elixir语言的计算机基础 引言 Elixir是一种现代的编程语言,建立在Erlang虚拟机(BEAM)上,专注于并发、分布式系统和容错能力。随着互联网的发展,应用程序的需求变得越来越复杂,Elixir凭借其高效的性能、灵…...
MindStudio制作MindSpore TBE算子(二)算子测试
在上一节中,成功制作了Mindspore的Add算子,具体可以查看MindStudio制作MindSpore TBE算子(一)算子制作,这一节,一起看看如何对算子进行测试。 建议参考以下内容一起食用: 算子代码实现 MindSpor…...
深度解读城市地下网管管廊改造要点
引 言 近日国家发改委和住建部联合发布通知(后附),要求各地抓紧编制“城市地下管网和综合管廊建设改造实施方案”并于12月27日前报国家发改委和住建部相关司处,逾期未报的城市(县、区),视同自愿…...
Docker 部署 redis | 国内阿里镜像
一、简易单机版 1、镜像拉取 # docker hub 镜像 docker pull redis:7.0.4-bullseye # 阿里云镜像 docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/redis_optimized:20240221-6.2.7-2.3.0 2、运行镜像 docker run -itd --name redis \n …...
Day88:加载游戏图片
在游戏开发中,加载和显示图片是非常常见的需求,尤其是在 2D 游戏 中,角色、背景、道具、敌人等都需要用图片来表示。今天,我们将学习如何在 Python 游戏开发中使用 Pygame 加载并显示图片。 1. 加载游戏图片的基本步骤 在 Pygame 中加载图片通常需要以下几个步骤: 导入 P…...
Elasticsearch:在 Elastic 中玩转 DeepSeek R1 来实现 RAG 应用
在这个春节,如一声春雷,DeepSeek R1 横空出世。现在人人都在谈论 DeepSeek R1。这个大语言模型无疑在中国及世界的人工智能发展史上留下了重要的里程碑。那么我们改如何结合 DeepSeek R1 及 Elasticsearch 来实现 RAG 呢?在之前的文章 “使用…...
SOME/IP报文格式及发现协议详解
在之前的文章中,我们介绍了SOME/IP协议的几种服务接口。在本篇博客中,主要介绍some/ip协议传输的header报文格式以及SOME/IP-SD发现协议。 目录 流程 报文格式 Message ID Length Request ID protocal version/Interface Version Message Type…...
elementplus 使用日期时间选择器,设置可选范围为前后大于2年且只能选择历史时间不能大于当前时间点
需求:时间选择器可选的时间范围进行限制,-2年<a<2年且a<new Date().getTime()核心:这里需要注意plus版没有picker-options换成disabled-date属性了,使用了visible-change和calendar-change属性逻辑:另设一个参…...
C语言·关键字·char关键字
C语言菜鸟入门关键字char关键字_c char-CSDN博客...
Ansible简单介绍及用法
一、简介 Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。主版本大概每2个月发布一次。 Ansible与Saltstack最大的区别是…...
Mac 本地搭建自己的 DeepSeek
Mac 本地搭建自己的 DeepSeek 安装 Ollama通过Ollama命令安装 DeepSeek 模型安装一个UI客户端,提升体验 注:本文章完全参考网上教程,没有丝毫原创,只是记录一下我本人在安装DeepSeek 的步骤 安装 Ollama https://ollama.com/dow…...
深度学习-交易预测
下面为你详细介绍如何使用Python结合深度学习库TensorFlow和Keras来构建一个简单的交易预测模型。在这个示例中,我们以股票价格预测为例,假设我们要根据过去一段时间的股票价格数据来预测未来的价格走势。 步骤分析 数据准备:获取股票价格数…...
Prompt逆向工程:如何“骗“大模型吐露其Prompt?
提示词的“逆向工程”,让AI大语言模型帮你反推提示词 一、前言 在日常生活中,我们不时会遇到一些令人惊艳的文本,不论是一篇精彩绝伦的小说、一篇深入浅出的科普文章,还是一篇充满热情的音乐推荐,它们都能在我们的心…...
游戏手柄Type-c方案,支持一边充电一边传输数据
乐得瑞推出LDR6023SS,专门针对USB-C接口手机手柄方案,支持手机快充,支持任天堂游戏机,PS4等设备~同时支持手机充电跟数据传输 1、概述 LDR6023SS SSOP16 是乐得瑞科技针对 USB Type-C 标准中的 Bridge 设备而开发的双 USB-C DRP …...
Vue设计模式到底多少种?
Vue设计模式到底多少种? 很多同学问,Vue到底有多少种设计模式??各个模式到底是什么意思??又各自适合什么场景?? 这里我给大家直接说下,Vue的设计模式没有一个固定的数值…...
C++ 中的 std::timed_mutex 和 std::recursive_timed_mutex
1、背景 在多线程编程中,互斥锁(Mutex)是用于保护共享资源的重要工具。C 标准库提供了多种互斥锁类型,其中 std::timed_mutex 和 std::recursive_timed_mutex 是两种支持超时功能的互斥锁。在阅读FastDDS源码时,发现了…...
HAL库外设宝典:基于CubeMX的STM32开发手册(持续更新)
目录 前言 GPIO(通用输入输出引脚) 推挽输出模式 浮空输入和上拉输入模式 GPIO其他模式以及内部电路原理 输出驱动器 输入驱动器 中断 外部中断(EXTI) 深入中断(内部机制及原理) 外部中断/事件控…...
Kotlin实战经验:将接口回调转换成suspend挂起函数
在 Kotlin 协程中, suspendCoroutine 和 suspendCancellableCoroutine 是用于将回调或基于 future 的异步操作转换成挂起函数。 suspendCoroutine 用途:将回调式异步操作转换为可挂起函数 行为: 启动一个新的协程来处理基于回调的操作挂起当前协程,直到调用回调回调负责…...
银行国际结算
银行国结项目,即国际结算项目,是银行业务中的重要组成部分,它涉及跨国界的货币收付和资金转移。 一、银行国结项目的定义 银行国结项目是指银行为国际贸易、投资等活动提供的国际结算服务,包括各种国际支付和资金清算业务。这些…...
java后端开发day13--面向对象综合练习
(以下内容全部来自上述课程) 注意:先有javabean,才能创建对象。 1.文字版格斗游戏 格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候&#…...
Vue解决父子组件传值,子组件改变值后父组件的值也改变的问题
vue开发过程中,父组件通过props传值给子组件,子组件在页面展示父组件的值,在操作子组件值以后,即使不点击确定按钮,父组件中的值也发生了变化,但是需求是操作子组件数据以后,必须点击"确定…...
【通俗解释,入门级】DeepSeek - R1 - Zero:强化学习提升LLM推理能力的奥秘
DeepSeek - R1 - Zero:强化学习提升LLM推理能力的奥秘 第一节:强化学习在DeepSeek - R1 - Zero中的基本概念与公式解释【通俗解释】 强化学习在DeepSeek - R1 - Zero里就像是一位“聪明的探险家”,在各种可能的推理路径中探索,通…...
《图解设计模式》笔记(六)访问数据结构
十三、Visitor 模式:访问数据结构并处理数据 Visitor:访问者 我们会“处理”在数据结构中保存着的元素,通常把“处理”代码放在表示数据结构的类中。 但每增加一种处理,就不得不去修改表示数据结构的类。 在 Visitor模式中&am…...
windows11上,使用pipx安装Poetry,Poetry的安装路径是什么?
当使用 pipx 安装 Poetry 时,pipx 会将 Poetry 安装到一个独立的虚拟环境中,并将其可执行文件链接到一个集中的目录中。以下是 pipx 安装 Poetry 时的路径信息: 1. Poetry 的安装路径 pipx 会为每个工具(如 Poetry)创…...
使用 vcpkg 简化 C++ 项目依赖管理
使用 vcpkg 简化 C 项目依赖管理 什么是 vcpkg? vcpkg 是微软推出的跨平台 C/C 包管理工具,支持 Windows/Linux/macOS。它可以帮助开发者: ✅ 一键安装 2000 开源库 ✅ 自动解决依赖关系 ✅ 生成 Visual Studio 集成配置 ✅ 支持自定义编译…...
怎样确定网站访问速度出现问题是后台还是服务器造成的?
网站的访问速度会影响到用户的体验感,当网络过于卡顿或访问速度较慢时,会给用户带来不好的体验感,但是网站访问速度不仅会是后台造成影响的,也可能是服务器的原因,那么我们该如何分辨呢? 当网站使用了数据库…...
【Elasticsearch】管道聚合
管道聚合就是在已有聚合结果之上在进行聚合,管道聚合是针对于聚合的聚合 在 Elasticsearch 中,管道聚合(Pipeline Aggregations)是一种特殊的聚合类型,用于对其他聚合的结果进行进一步的计算和处理,而不是直…...
CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据)
代码地址:CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据) CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测 一、引言 1.1、研究背景和意义 随着全球能源危机和环境问题的日…...
后端java工程师经验之谈,工作7年,mysql使用心得
mysql 工作7年,mysql使用心得 mysql1.创建变量2.创建存储过程2.1:WHILE循环2.2:repeat循环2.3:loop循环2.4:存储过程,游标2.5:存储过程,有输入参数和输出参数 3.三种注释写法4.case …...
综合评价 | 基于随机变异系数-TOPSIS组合法的综合评价模型(Matlab)
基于随机变异系数-TOPSIS组合法的综合评价模型 代码获取私信回复:综合评价 | 基于随机变异系数-TOPSIS组合法的综合评价模型(Matlab) 一、引言 1.1、研究背景与意义 在现代社会,随着信息量的不断增加和数据复杂性的提升&#…...
Visual Studio Code中文出现黄色框子的解决办法
Visual Studio Code中文出现黄色框子的解决办法 一、vsCode中文出现黄色框子-如图二、解决办法 一、vsCode中文出现黄色框子-如图 二、解决办法 点击 “文件”点击 “首选项”点击 “设置” 搜索框直接搜索unicode选择“文本编辑器”,往下滑动,找到“Un…...
手写一个C++ Android Binder服务及源码分析
手写一个C Android Binder服务及源码分析 前言一、 基于C语言编写Android Binder跨进程通信Demo总结及改进二、C语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.h代码实现3.2 BnHelloService.c…...