for(;iter!=mapStudent.end();){ if((iter->second)>=aa) { //满足删除条件,删除当前结点,并指向下面一个结点 mapStudent.erase(iter++); } else { //条件不满足,指向下面一个结点 iter++; }}这种删除方式...
分类:
其他好文 时间:
2014-06-18 13:47:29
阅读次数:
207
1、vector
变长一维数组,连续存放的内存块,有保留内存,堆中分配内存;
支持[]操作,高效率的随机访问;
在最后增加元素时,一般不需要分配内存空间,速度快;在中间或开始操作元素时要进行内存拷贝效率低;
vector高效的原因在于配置了比其所容纳的元素更多的内存,内存重新配置会花很多时间;
注:需要高效的随即存取,而不在乎插入和删除使用vector。
...
分类:
其他好文 时间:
2014-06-16 22:11:01
阅读次数:
239
卡片游戏:很好地介绍了队列的特点和应用
桌上有一叠牌,从第一张牌开始从上往下依次编号1~n。当至少还剩两张牌时进行如下操作:把第一张牌扔掉,然后把新的第一张牌放到整叠牌的最后。输入n,输出每次扔掉的牌,以及最后剩下的牌。
样例输入:7
样例输出:1 3 5 7 4 2 6
代码如下:
#include
#include
using namespace std;
queue q...
分类:
其他好文 时间:
2014-06-16 22:08:57
阅读次数:
220
图1、STL和c++标准模板库
作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的。STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心并非昙花一现。本教程旨在传播和普及STL的基础知识,若能借此机会为STL的推广做些力所能及的事情,到也是件让人愉快的事情。
1、
"什么是STL?",假如你对STL还知之甚少,那么我想,你一定很想知...
分类:
编程语言 时间:
2014-06-16 21:54:33
阅读次数:
298
1.PyDictObject对象 --> C++ STL中的map是基于RB-tree的,搜索时间复杂度是O(logN)
PyDictObject采用了hash表,时间复杂度是O(1)
typedef struct{
Py_ssize_t me_hash; //me_key的hash值,避免每次查询都要重新计算一遍hash值
PyObject *me_key;
PyObject *me_value;
}PyDictEntry;
将(key,value)对称为entry,它可以在3种状态...
分类:
编程语言 时间:
2014-06-16 21:22:45
阅读次数:
272
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!
1. map最基本的构造函数;
mapmapstring; mapmapint;
mapmapstring; mapmapchar;
mapmapchar; m...
分类:
其他好文 时间:
2014-06-16 19:35:02
阅读次数:
187
一、简介我们在学习C++的过程中,学到STL是必然的,那么STL的入门就是vector了。vector是同一种类型的对象的集合,vector很像数组,空间是连续的,能非常高效和方便的访问单个元素,但是它支持动态增加和压缩数据,所以这是矛盾的,这个问题,我们会在后期的STL源码的分析中来..
分类:
编程语言 时间:
2014-06-16 17:20:17
阅读次数:
254
既然“指针”的使用者一不小心就可能导致内存泄漏,那么我们如何能够使得指针的使用变得更安全呢?从C++面向对象的角度分析,我们有没有可能将“指针”封装起来,使得用户不直接接触指针,而使用一个封装后的对象来替代指针的操作呢?
答案是显然的,“智能指针”(smart pointer)正解决这类问题,尤其是在防止内存泄漏方面做得非常突出。C++标准库std中提供了一种“智能指针类”名为"...
分类:
编程语言 时间:
2014-06-15 15:04:11
阅读次数:
352
打印全排列是个有点挑战的编程问题。STL提供了stl::next_permutation完美的解决了这个问题。
但是,如果不看stl::next_permutation,尝试自己解决,怎么做?
很自然地,使用递归的办法:
1. 单个元素的排列只有1个。
2. 多个元素的排列可以转化为:
以每个元素为排列的首个元素,加上其他元素的排列。
有了思路,就可以编码了。
第一个...
分类:
其他好文 时间:
2014-06-14 15:10:03
阅读次数:
263