自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 【c++随笔】std::condition_variable及成员函数wait 和 notify_one(以及 notify_all)

std::condition_variable 是 C++ 标准库中的一个类,它允许线程等待某个条件成立(或者说某个事件被触发)。通常与 std::mutex 一起使用,以确保在访问共享数据时线程安全。

2024-04-30 11:22:27 181 1

原创 【c++随笔】std::clamp

std::clamp函数接受三个参数:要限制的值v,下限lo和上限hi。因此,该函数确保返回的值始终在[lo, hi]的范围内。例子中,分别尝试将值3,6,10限制在5和7之间。以10为例,由于10大于7,因此std::clamp返回7,并将7赋值给kClamped ,然后输出这个限制后的值。std::clamp是C++标准库中的一个函数模板,用于限制给定值的范围在指定的上下限之间。总的来说,std::clamp函数用于确保值始终保持在预期的范围内,从而避免可能的错误或越界情况。

2024-04-24 14:45:48 611

原创 【c++随笔】成员初始化表达式列表

在C++中,成员初始化表达式列表(Member Initializer List)是一种在构造函数体内部初始化类成员的方式。成员初始化表达式列表位于构造函数体的花括号 {} 之前,并紧跟在构造函数头之后。注意,成员初始化表达式列表中的初始化顺序与成员变量在类定义中的声明顺序相同,而不是它们在初始化列表中的顺序。在某些情况下,成员之间的初始化顺序可能很重要,特别是当成员之间存在依赖关系时。成员初始化表达式列表在性能优化方面也非常有用,因为它允许在构造函数体执行任何代码之前直接初始化成员变量。

2024-04-20 13:00:00 126

原创 【c++随笔】std::unordered_map

在这个例子中,首先创建了一个 std::unordered_map<int, Cpu> 容器 mCpus,并向其中添加了几个元素。接下来,使用for循环遍历整个容器,在循环中,使用 pair.first 访问键,使用 pair.second 访问值,使用 const auto& 来避免不必要的拷贝,并且确保不会修改容器中的元素。下面是一个例子,展示了如何查找特定的键,获取对应的值,以及如何遍历整个 std::unordered_map 容器。以上,实现了查找容器的键和值,以及遍历整个容器的基本操作。

2024-04-19 13:45:45 310 1

原创 【c++随笔】std::shared_ptr

可以为 std::shared_ptr 提供一个自定义的删除器,用于在对象被删除时执行特定的操作。cpppublic:// 创建一个指向Student的shared_ptr,输出 "Student::Student"// mOther 和mStu共享同一个Student对象,不会再次调用Student的构造函数// 当 mOther,mStu离开作用域时,它们的析构函数会被调用,但Student对象不会被删除,因为引用计数不为0。

2024-04-19 12:04:26 564 1

原创 【c++随笔】c++ 左值 右值

在 C++ 中,左值(lvalue)和右值(rvalue)是两种基本的值类别,用于描述表达式的结果和对象的存储位置。这两个术语主要用于区分对象在表达式中的使用方式,特别是在进行赋值和函数调用时。

2024-04-18 22:00:00 293

原创 【c++随笔】std::move()

此外,虽然 std::move 可以用来触发移动操作,但并不意味着每次使用 std::move 都会发生移动。在这个例子中,std::move(v1) 将 v1 转换为右值引用,这使得 v2 可以使用移动构造函数来接收 v1 的资源,而不是通过复制来创建这些资源的副本。实际的移动操作(如移动构造函数或移动赋值运算符)是由接收右值引用的对象来执行的。std::move 是 C++11 标准库中的一个函数模板,它用于将一个对象转换为右值引用,从而允许使用移动语义而非拷贝语义来操作该对象。

2024-04-18 17:29:59 226

原创 【yocto 调试】使用gdb调试core dumped问题

切换coredump文件所在目录,使用 GDB 打开 coredump 文件。info threads:如果程序是多线程的,这个命令会显示所有线程的信息。bt 或 backtrace:显示程序崩溃时的调用堆栈。frame 命令加上堆栈帧的编号:切换到特定的堆栈帧。print 或 p 命令加上变量名:打印变量的值。list 或 l:显示当前堆栈帧中的源代码。

2024-04-16 14:50:35 180

原创 【c++随笔】auto const , std::to_string, static_cast的作用

用于将一个数值变量(capacity)转换为其字符串表示,并将结果存储在常量字符串变量capacity_str中。

2024-04-15 16:17:56 233 1

原创 【c++随笔】C++是如何工作的

学习如何从简单的从源文件到可执行二进制文件。

2024-04-13 11:46:52 672

原创 【c++随笔】final关键字

同时,由于 Study 的拷贝构造函数和拷贝赋值运算符被删除,Student也不能被复制,因为它继承了Study这些被删除的成员。另外,一个类可以同时是final和abstract(即包含纯虚函数),但这通常没有实际意义,因为抽象类不能被实例化,所以也不能被继承。3.错误预防:如果你不希望某个类被继承,但由于某些原因(例如疏忽或未来开发者的误解)它仍然被继承了,这可能会导致意外的行为或错误。1.设计固定性:当你有一个类,其设计初衷就是不应该被其他类继承时,使用final可以确保这一点。

2024-04-11 14:19:01 277

原创 【c++随笔】std::optional<std::uniqure_ptr<Study>> const mStu;

综上所述,std::optional<std::unique_ptr> const mStu;声明了一个常量成员变量,它可能包含一个指向 Study 类型的对象的 std::unique_ptr,也可能不包含任何值。一旦 mStu 被初始化,你就不能再改变它的状态了。

2024-04-10 20:04:37 157 1

原创 【c++随笔】 C++中 std::optional 类型的成员函数.value_or(false)

value_or(false) 是C++中 std::optional 类型的一个成员函数。std::optional 是一个可以包含或不包含值的包装器。当你尝试访问一个不包含值的 std::optional 对象时,通常会发生未定义行为,但 std::optional 提供了一些成员函数来安全地处理这种情况。

2024-04-10 19:09:07 298 1

原创 【c++随笔】std::function

【代码】【c++随笔】std::function。

2024-04-09 18:54:51 81

原创 【c++ 随笔】class和struct的区别

【代码】【c++ 随笔】class和struct的区别。

2024-04-09 18:36:38 176

原创 【日常调试】

将以下语句转换成printf格式并打印。在format前面添加#,即。

2024-03-05 14:30:28 308

原创 【C++随笔】C++中如何获取vector数组中每个string类型元素的长度

C++中如何获取vector数组中每个string类型元素的长度。

2023-12-04 13:33:30 219

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除