- 博客(4)
- 收藏
- 关注
原创 c++ vector 对于内存的分配方式
我的理解是vector是作为一个模板类来实现的,和一般的简单数组类型如int arry[]不同,对于前者,&data代表的是vector对象的地址,&data[0]代表的是第一个元素的地址,元素应该是作为vector类的成员变量存在的,而后者数组的地址即是数组中第一个元素的地址。根据结果可以看到capacity的大小依次为1,2,3,4,6,9,13,19,28,42,63,94,141。写了个简单的代码实验了一下。此外在验证过程中发现虽然地址&data[0]发生了变化,但地址&data是不会改变的。
2023-05-05 18:52:47 940
原创 关于bitset<N>()中N必须为常量表达式
(另外bitset变量实际上是按照字节数存储,如N=7时,sizeof长为1字节,即8bit。)和静态数组的长度必须在声明时指明具体的值,而不能使用变量声明静态数组的长度的道理一样。搜了一下bitset的用法,给出的示例里面基本上都是bitset b(s),这样N的位置是常数的情况,没有特别说明n不能是变量/常变量。一开始是这样写的,编译器一直报错n不是constant-expr,就很奇怪。然后看了下源代码和一些报错提醒,应该是要求N必须是。,也就是说初始化N的表达式。
2023-05-04 16:43:39 474 1
原创 快速排序(思想+实现)
每次从待排序的数组中选取一个元素作为基准,将所有小于基准的元素放到其左侧,大于基准的元素放到其右侧。每一趟排序,遍历n个元素,时间复杂度O(n),确认1个元素的位置。第1趟排序,遍历n个元素,时间复杂度O(n),确认1个元素的位置;第2趟排序,遍历n个元素,时间复杂度O(n),确认2个元素的位置;第3趟排序,遍历n个元素,时间复杂度O(n),确认4个元素的位置;第4趟排序,遍历n个元素,时间复杂度O(n),确认8个元素的位置;每次排序确认的元素个数呈2的指数倍增长,因此确认n个元素只需要。
2023-04-25 19:43:28 200 1
原创 C++ STL 一些常用函数
注意:不要和itoa弄混,itoa即是int to array(string?)是把整型转换为字符串。c++11新特性,把连续递增的值,赋给一段连续的内存空间的数据。是基于迭代器和模板实现的。另,其实使用iota不会提高效率,也是遍历赋值的,只是代码更简洁而已。
2023-04-25 19:12:48 164 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人