- 博客(17)
- 收藏
- 关注
原创 【c++随笔】std::condition_variable及成员函数wait 和 notify_one(以及 notify_all)
std::condition_variable 是 C++ 标准库中的一个类,它允许线程等待某个条件成立(或者说某个事件被触发)。通常与 std::mutex 一起使用,以确保在访问共享数据时线程安全。
2024-04-30 11:22:27
406
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
2677
原创 【c++随笔】成员初始化表达式列表
在C++中,成员初始化表达式列表(Member Initializer List)是一种在构造函数体内部初始化类成员的方式。成员初始化表达式列表位于构造函数体的花括号 {} 之前,并紧跟在构造函数头之后。注意,成员初始化表达式列表中的初始化顺序与成员变量在类定义中的声明顺序相同,而不是它们在初始化列表中的顺序。在某些情况下,成员之间的初始化顺序可能很重要,特别是当成员之间存在依赖关系时。成员初始化表达式列表在性能优化方面也非常有用,因为它允许在构造函数体执行任何代码之前直接初始化成员变量。
2024-04-20 13:00:00
178
原创 【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
428
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
648
1
原创 【c++随笔】c++ 左值 右值
在 C++ 中,左值(lvalue)和右值(rvalue)是两种基本的值类别,用于描述表达式的结果和对象的存储位置。这两个术语主要用于区分对象在表达式中的使用方式,特别是在进行赋值和函数调用时。
2024-04-18 22:00:00
342
原创 【c++随笔】std::move()
此外,虽然 std::move 可以用来触发移动操作,但并不意味着每次使用 std::move 都会发生移动。在这个例子中,std::move(v1) 将 v1 转换为右值引用,这使得 v2 可以使用移动构造函数来接收 v1 的资源,而不是通过复制来创建这些资源的副本。实际的移动操作(如移动构造函数或移动赋值运算符)是由接收右值引用的对象来执行的。std::move 是 C++11 标准库中的一个函数模板,它用于将一个对象转换为右值引用,从而允许使用移动语义而非拷贝语义来操作该对象。
2024-04-18 17:29:59
314
原创 【yocto 调试】使用gdb调试core dumped问题
切换coredump文件所在目录,使用 GDB 打开 coredump 文件。info threads:如果程序是多线程的,这个命令会显示所有线程的信息。bt 或 backtrace:显示程序崩溃时的调用堆栈。frame 命令加上堆栈帧的编号:切换到特定的堆栈帧。print 或 p 命令加上变量名:打印变量的值。list 或 l:显示当前堆栈帧中的源代码。
2024-04-16 14:50:35
334
原创 【c++随笔】auto const , std::to_string, static_cast的作用
用于将一个数值变量(capacity)转换为其字符串表示,并将结果存储在常量字符串变量capacity_str中。
2024-04-15 16:17:56
322
1
原创 【c++随笔】final关键字
同时,由于 Study 的拷贝构造函数和拷贝赋值运算符被删除,Student也不能被复制,因为它继承了Study这些被删除的成员。另外,一个类可以同时是final和abstract(即包含纯虚函数),但这通常没有实际意义,因为抽象类不能被实例化,所以也不能被继承。3.错误预防:如果你不希望某个类被继承,但由于某些原因(例如疏忽或未来开发者的误解)它仍然被继承了,这可能会导致意外的行为或错误。1.设计固定性:当你有一个类,其设计初衷就是不应该被其他类继承时,使用final可以确保这一点。
2024-04-11 14:19:01
321
原创 【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
203
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
822
1
原创 【C++随笔】C++中如何获取vector数组中每个string类型元素的长度
C++中如何获取vector数组中每个string类型元素的长度。
2023-12-04 13:33:30
308
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人