- 博客(5)
- 收藏
- 关注
原创 条款18:避免使用vector<bool>
问题今天在刷leetcode的时候,写的代码有一个地方一直报错,但是却找不到问题所在 //...... vector<bool> dp(len2+1,false); //..... dp[j] |= dp[j-1] ; //这个地方一直报错,none viable overload |=我起初以为是bool类型不能用这个|=运算符吗,但是尝试了之后是可以的。发现最后找到问题所在,effective STL中条款18说不建议用vector,因为在vector内部会把这个
2020-07-18 23:01:50
498
转载 list(双向链表)
list概述环状双向链表特点:底层是使用链表实现的,支持双向顺序访问,不支持随机访问,因此访问某个元素需要遍历在list中任何位置进行插入删除都很快,不会像vector那样子需要逐个移动其他元素每个节点需要额外的内存list节点list的每一个节点都是一个结构体:template <class T>struct __list_node { typedef void* void_pointer; void_pointer prev; //类型为void*。其实可设
2020-05-24 23:03:35
727
转载 vector
1.vector概述vector的数据安排以及操作方式与array非常类似。两者唯一的差别就是在于空间的运用灵活性,array是静态空间,一旦分配了就是固定的,无法改变其大小。需要用户重新申请更大的空间,移动数据,释放原来的空间。而vector是动态空间,有其内部的空间分配机制来及时调整空间大小,其实就是vector把申请空间,移动数据,释放原来的空间等操作封装在内部,不需要用户去处理。//alloc是SGI STL的空间配置器template <class T, class Alloc = a
2020-05-23 17:36:32
1523
原创 malloc,free的一些点
前几天学习c++的内存管理,new和delete,看的视频大部分都是讲解到底层调用malloc和free。我当时看视频简单的以为malloc就是分配个多大空间的内存,free就是把指针指向的大小释放掉,释放的多少根据指针指向对象的类型判定。但是在写内存池时有一个严重的问题,我malloc(n)的时候多次把指针转换为char*,导致我释放的时候不知道怎么根据char来释放掉这个大小为n的内存块。因为free传递的参数只有一个void指针。后来我尝试搜了一些资料,发现,malloc和free在分配内存的时候其
2020-05-19 10:50:12
151
原创 二维vector的内存分配
二维vector的内存分配新的改变第一次写博客,难免比较粗糙。之前的误区之前一直以为二维vector的在内存中是各个一维vector拼接在一起的,今天才发现是错误的。在内存中,二维vector的每个子vector内部是连续的,但是子vector之间是非连续的。且vector[0]和vector[0][0]地址都是不同的。我用vs2019进行测试的,我把一个二维数组插入了元素,然后输出每个元素的地址,结果如图...
2020-05-16 11:40:52
1996
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人