摘要:
a.随机算法rang(Random Algorithm)利用软件或硬件的随机数发生器来确定主存储器中被替换的页面。这中算法最简单,而且容易实现。但是,这种算法完全没有利用主存储器中页面调度情况的历史信息,吗也没有反应程序的局部性,所以命中率较低。b.先进先出调度算法(FIFO)先进先出调度算法根据页面进入内存的时间 先后选择滔滔页面,本算法实现时需要将页面按照进入的时间先后组成一个队列,每次调度队首页面予以淘汰。他的优点是比较容易实现,能够利用主存储器中页面调度情况的历史信息,但是,他没有反映程序的局部性,因为最先调入主存的页面,很可能也是经常要使用的页面。c.最近最少调度算法 LFU先进先出 阅读全文
摘要:
---恢复内容开始---问题描述任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,下面介绍了几种方法来实现这道题,相信很多人可能见过下面的算法,但我相信很少有人见到本文中所有的算法。如果您上头上有更好的算法,或者本文没有提到的算法,请不要吝惜您的代码,分享的时候,也是学习和交流的时候。普通法我总是习惯叫普通法,因为我实在找不到一个合适的名字来描述它,其实就是最简单的方法,有点程序基础的人都能想得到,那就是移位+计数,很简单,不多说了,直接上代码, 阅读全文
摘要:
关联容器不同于顺序容器的是:顺序容器底层用数组实现,为线性结构;关联容器在实现中,用到的非线性存储方式; 顺序容器是通过元素在容器中的位置顺序存储和访问元素,而关联容器是通过键(key)存储和读取元素的。C++标准模板库中,关联容器有set、multiset、map、multimap。1.底层原理 我们已经说过,关联容器底层实现是用非线性存储方式,那么这种非线性存储方式是什么呢? 答案是“红黑树”(RB-Tree),红黑树是平衡二叉树的一种,其有以下特点: (1)所有左子树结点的值小于等于根节点的值,右子树节点的值大于根节点的值。 (2)没有一个节点深度过大。 通过上面,就可以... 阅读全文
摘要:
目录====================================================第一章 容器第二章 Vector和string第三章 关联容器第四章 迭代器第五章 算法第六章 函数第七章 在程序中使用STL====================================================第1章 容器第1条:慎重选择容器类型。标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“ 阅读全文
摘要:
my_container.erase(iter); 其中my_container是STL的某种容器,iter是指向这个容器中某个元素的迭代器。如果不是在for,while循环中,这种方式删除元素没有问题,如果是在for,while中对m_container迭代,删除其中符合条件的所有元素,就可能出现问题。如果是在for,while中对m_container迭代,删除其中符合条件的所有元素,就可能出现问题。 问题是: 在迭代容器的时候删除元素,可能导致迭代器失效(invalidation of iterators),产生未定义行为(undefined behavior);例如,对某个迭... 阅读全文
摘要:
概括的说,指针其实就是可变数组的首地址,说是可变数组,是 指其包含内容的数量的可变的,并且是可动态申请和释放的,从而充 分节约宝贵的内存资源。我一向喜欢一维数组,除非万不得已,我一 般是不用二维数组的,多维的则更是很少涉足了。因为一维简单,容 易理解,而用指针指向的多维数组就具有相当的复杂性了,也因此更 具有讨论的必要。 闲话少说,这里我就以三个二维数组的比较来展开讨论: (1)、int **Ptr; (2)、int *Ptr[ 5 ]; (3)、int ( *Ptr )[ 5 ]; 以上三例都是整数的二维数组,都可以用形如 Ptr[ 1 ][ 1 ] 的 方式访问其内容;但它们的差... 阅读全文