
C++
文章平均质量分 58
王莽v2
做一条有梦想的咸鱼
展开
-
Valgrind的安装与使用
Valgrind 提供了多种工具和选项,用于检测不同类型的问题,如内存泄漏、使用未初始化的变量等。Valgrind 是一款用于检测内存错误和性能问题的工具。请注意,Valgrind 可能无法检测所有问题,但它是一款强大的工具,对于查找和解决内存问题非常有帮助。注意:Valgrind 在检测内存问题时会导致程序运行变慢,因此不适合在生产环境中长时间运行。要了解 Valgrind 的更多用法和选项,请查阅 Valgrind 官方文档或在线资源。Valgrind 会执行你的程序,并输出内存错误和泄漏的信息。原创 2024-05-24 15:56:23 · 898 阅读 · 0 评论 -
C++对象切片错误
C++对象切片错误是指在使用继承关系的类时,将派生类对象赋值给基类对象,导致派生类的特有成员被切掉,只保留了基类的部分成员。这通常是因为使用了对象的引用或指针来存储派生类对象,但将其赋值给基类对象的时候发生的错误。原创 2024-05-24 15:37:05 · 265 阅读 · 0 评论 -
C++使用范围for语句处理多维数组
这样得到的 row 的类型就是 int * ,显然内层的循环就不合法了,编译器将试图在一个 int * 内遍历,这显然和程序的初衷相去甚远。这样得到的 row 的类型就是 int * ,显然内层的循环就不合法了,编译器将试图在一个 int * 内遍历,这显然和程序的初衷相去甚远。第二个 for 循环遍历那些4元素数组中的某一个,因此col的类型是整数的引用。举一个例子,考虑如下的循环∶。第一个for循环遍历ia的所有元素,这些元素是大小为 4 的数组,因此 row的类型就应该是含有4个整数的数组的引用。原创 2024-05-24 14:49:12 · 515 阅读 · 0 评论 -
C++ 使用异常的优缺点和noexcept的作用
在C++中是否使用异常是一个有争议的话题,使用异常有一些优点,但也有一些缺点。原创 2024-05-24 14:33:48 · 429 阅读 · 0 评论 -
C++中Lambda表达式的使用场景
总的来说,Lambda表达式在C++中有许多实用的使用场景,它可以让代码更加简洁、灵活,并提高开发效率。但也需要注意适度使用,避免在Lambda内部写过于复杂的逻辑,以保持代码的可读性和维护性。原创 2024-05-24 13:15:34 · 414 阅读 · 0 评论 -
C++中const、引用类型初始化
如果成员是const、引用,或者属于某种未提供默认构造函数的类类型,我们必须通过构造函数初始值列表为这些成员提供初值。类成员的初始化可以通过构造函数的参数列表初始化,也可以在构造函数中赋值完成初始化。原创 2024-05-24 09:59:23 · 282 阅读 · 0 评论 -
C++ std::lock_guard
/ 构造时自动加锁// 构造时自动加锁 std :: lock_guard < std :: mutex >(kMutex);// 离开局部作用域,析构函数自动完成解锁功能 }// 构造时自动加锁 std :: lock_guard < std :: mutex >(kMutex);// 离开局部作用域,析构函数自动完成解锁功能 }// 构造时自动加锁 std :: lock_guard < std :: mutex >(kMutex);原创 2024-05-24 09:44:12 · 1412 阅读 · 0 评论 -
C++ Lambda表达式
其中,capture list 是捕获列表,用于指定需要在 lambda 表达式中使用的外部变量。Lambda 表达式非常灵活,可以用于各种场景,例如在 STL 算法中作为谓词(predicate)、用于多线程编程中、在算法中进行数据处理等等。在上面的示例中,我们创建了一个 lambda 表达式,它捕获了外部变量 x 和 y,并计算它们的和。Lambda 表达式是 C++11 中引入的一种用于创建匿名函数的特殊语法。它允许我们在代码中定义一个临时的、无名的函数对象,而无需显式定义一个函数。原创 2024-05-24 09:40:28 · 308 阅读 · 0 评论