- 博客(54)
- 收藏
- 关注
原创 printf的%s
printf() 输出字符串时,会从第 0 个元素开始往后检索,直到遇见'\0'才停止,然后把'\0'前面的字符全部输出,这就是 printf() 输出字符串的原理。
2024-03-25 20:12:08 126
原创 c++插入排序
C++ 中的插入排序是一种简单直观的排序算法,它通过构建有序序列,对未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入。在上面的示例中,insertionSort 函数实现了插入排序算法,main 函数中演示了如何使用这个函数对一个整数数组进行排序。
2024-03-18 21:24:21 336
原创 从遍历上来说,list是单向的,vector是双向的。这句话对吗
从遍历的角度来说:- 对于list来说,虽然它是双向链表,每个节点都包含指向前一个节点和后一个节点的指针,但在实际遍历时,我们通常只能沿着一个方向(比如从头到尾或从尾到头)进行遍历,因为单个节点并不直接提供反向遍历的功能。因此,可以说对于list来说,在常规情况下遍历是单向的。- 对于vector来说,由于元素在内存中是连续存储的,我们可以通过下标或迭代器自由地双向遍历vector中的元素。因此,可以说对于vector来说,遍历是双向的。
2024-03-16 21:45:05 381
原创 MySQL的视图(View)
视图(View)是一种虚拟的表,它是基于 SQL 查询结果集生成的,不存储实际的数据。视图可以包含来自一个或多个基本表的行和列,当查询视图时,实际上是执行了定义视图时指定的查询语句。通过视图,用户可以以一种逻辑上的方式看待数据,而不必关心底层表结构或复杂的联接操作。视图可以简化复杂查询的编写,提高查询的重用性,同时还可以加强数据安全性,限制用户对数据的访问权限。视图在数据库中起到类似于虚拟表的作用,使得用户能够以一种更便利的方式访问和操作数据,是数据库中非常有用的概念和功能之一。
2024-03-16 16:18:13 316
原创 fcntl()解释
fcntl()是一个系统调用函数,用于对文件描述符进行操作。它可以用于执行各种操作,如复制文件描述符、获取/设置文件描述符的属性、锁定文件、调整文件偏移等。fcntl()函数的原型如下:```c#include int fcntl(int fd, int cmd, ... /* arg */);```其中,fd是需要进行操作的文件描述符,cmd是指定要执行的操作的命令,arg是可选的参数,根据不同的命令可能需要提供附加参数。fcntl()函数的常见命令(cmd)包括:
2024-03-13 22:22:37 347
原创 cmake的CMAKE_CURRENT_BINARY_DIR解释
`CMAKE_CURRENT_BINARY_DIR` 是 CMake 中一个预定义的变量,用于表示当前正在构建的目标的输出目录。也就是说,当你使用 CMake 构建项目时,该变量会指向当前 CMakeLists.txt 文件所在目录下的构建目录。这个变量通常用来指定生成的可执行文件、库文件等的输出路径。在编写 CMake 脚本时,你可以使用 `${CMAKE_CURRENT_BINARY_DIR}` 来引用这个变量,从而方便地将输出文件安置在正确的位置。需要注意的是,这个变量是只读的,无法手动修改它
2024-03-13 12:05:35 496
原创 PROJECT_SOURCE_DIR和CMAKE_CURRENT_SOURCE_DIR区别
CMAKE_CURRENT_SOURCE_DIR和PROJECT_SOURCE_DIR是两个不同的变量,它们在CMake中有着不同的作用和含义:1. PROJECT_SOURCE_DIR: - PROJECT_SOURCE_DIR是一个由CMake自动生成的变量,用于表示整个项目的根目录路径,即包含顶层CMakeLists.txt文件的目录。 - PROJECT_SOURCE_DIR通常用于引用项目中的其他文件,如源代码文件、头文件等,并且是相对于项目根目录的路径。 - PROJECT
2024-03-13 11:12:59 413
原创 proto的singular解释
在计算机科学和特别是在协议缓冲区(Protocol Buffers,简称Proto)的上下文中,“singular”这个词具有特定的含义。Protocol Buffers是Google开发的一种语言中立、平台中立、可扩展的序列化结构数据的方法,广泛用于通信协议、数据存储等。在Proto定义文件中,字段可以被标记为“singular”或“repeated”来指示该字段是单一值还是值的数组(列表)。这里的“singular”意味着对应的字段是单一实例,即在每个消息实例中,该字段只能出现一次且仅代表一个值或一
2024-03-13 00:12:39 707 1
原创 weak_ptr可以修改shared_ptr的值吗
`std::weak_ptr` 本身不能直接修改它所观察的 `std::shared_ptr` 所管理的对象的值。`std::weak_ptr` 的设计目的是为了提供一种不控制对象生命周期(即不增加引用计数)的方式来观察由 `std::shared_ptr` 管理的对象。这样做可以避免循环引用问题,这种问题可能会导致内存泄漏。
2024-03-08 11:55:46 307
原创 weak_ptr作用是
`weak_ptr`是C++标准库中智能指针的一种,它设计用来解决智能指针(特别是`std::shared_ptr`)可能产生的循环引用问题。`weak_ptr`持有对对象的非拥有(弱)引用,即它不会增加对象的引用计数。
2024-03-08 10:41:14 461
原创 std::unique_ptr<int> p5(new int); *p5 = 10;是用了赋值运算符重载吗
std::unique_ptr p5(new int); *p5 = 10;是用了赋值运算符重载吗
2024-03-08 10:13:25 308
原创 c++的引用和复杂有什么关系
C++中的引用与复制之间的关系是一个重要概念,理解这一点对于编写高效、可靠的C++程序至关重要。下面我将逐步深入地解释这两者的关系和区别,以及它们各自的使用场景。
2024-03-07 20:16:35 311
原创 为什么字符串在常量区
字符串在常量区的主要原因是为了提高内存利用率和程序性能。将字符串存储在常量区可以避免重复存储相同的字符串,节约内存空间。另外,由于字符串在常量区是不可变的,这有利于提高程序的安全性,避免意外修改字符串内容导致的错误。此外,字符串在常量区的存储方式也有利于编译器进行优化,提高程序的执行效率。因此,将字符串存储在常量区是一种经过深思熟虑的设计选择,有利于提高程序的性能和安全性。
2024-02-29 17:08:21 297
原创 为什么把srand()放在循环外就能产生不同的序列呢?
srand()函数的作用是设置rand()函数生成随机数的种子,而不是修改rand()函数的seek。在调用srand()函数时,会将传入的参数作为种子,对rand()函数产生的随机数序列进行初始化,从而使得每次运行程序时,rand()函数生成的随机数序列都是相同的。
2024-02-27 14:32:00 325
原创 char *s2 = str+4;为什么不打印全部
在C语言中,使用指针来表示字符串时,指针所指向的位置就是字符串的起始位置,直到遇到字符串结束符`\0`为止。因此,当使用`printf`打印`s2`时,会打印从指定位置开始直到遇到`\0`的所有字符。
2024-02-26 11:37:55 310 1
原创 假设 p 是指向数组 arr 中第 n 个元素的指针,那么 *p++、*++p、(*p)++ 分别是什么意思呢?
假设 p 是指向数组 arr 中第 n 个元素的指针,那么 *p++、*++p、(*p)++ 分别是什么意思呢?
2024-02-25 21:02:32 355 1
原创 ZREVRANGE排序问题
zadd myzset 1 one 2 two 3 three,ZREVRANGE myzset 1 -1 #从大到小排序输出1) "two"2) "one"为什么是two one 而不是three two
2024-02-04 16:00:03 363 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人