Aug 21
    在C++里,STL中string和vector的空间是可以自动增长的,但是有一个问题是,当你将它们中的元素删除(甚至是使用clear函数)时,多余的空间不会被释放,这时候可以用一个交换技巧(详见Effective STL)来清空多余的元素:
Tags:
Aug 21
这些天花了不少时间看STL,当然也少不了看《Effective STL》这本书。
这本书讲了很多内容,我只记下了对于初学者比较容易理解和需要记住的一些重要条款:

条款4:用empty()来代替检查size()是否为0
因为size()可能需要O(n)的时间,但是empty()只需要O(1)

条款5:尽量使用区间成员函数代替它们的单元素兄弟
对于插入已知数量或已知区间的元素,使用区间版的成员函数效率高。
比如vt.insert(a, a+100000)效率将显然高于for(i=0;i<100000;i++)vt.insert(a[i]);
因为后者需要反复调用insert()并可能多次重新分配空间
Tags: ,
Aug 20

STL的内存占用测试 不指定

felix021 @ 2008-8-20 18:45 [IT » 程序设计] 评论(1) , 引用(0) , 阅读(10332) | Via 本站原创
今天做比赛的时候Cplus用STL的list写一个3000个vertex的图的邻接表MLE了,所以产生了测试STL容器内存占用的念头。
没下什么软件,也没用系统什么命令,就是写个程序插入500,000个元素到这些容器中,然后分别提交到WOJ 1035进行测试。
因为1035的内存限制是64M,时间限制是1000ms,所以没有用更大的数据进行测试,但是测试结果确实能说明一些问题了:

实测环境:WOJ 1035 BG
数据量: 500,000个int(map使用的是<int,int>)
结果:
容器    内存占用    时间
array  3060K      4ms
deque  3200K      15ms
queue  3204K      19ms
stack  3204K      19ms
vector 5168K      14ms
priority_queue 5172K  650ms
list   16768K     132ms
set    24584K     922ms
map<int,int> 24584K   913ms

不知道为什么list会占用那么大的空间,看来以后对list的使用要谨慎再谨慎了。
Tags: ,
Aug 19
VC6_基于对话框MFC程序最基础教程示例~

by Sandy_zc_1  

(说实话我觉得发这帖子很不像我的风格,倒是Felix经常给别人写示例。不过最近有学弟学妹们学习MFC啊,就借个地方把之前自己写的这些东西放上来给他们参考吧)

前段时间为了教几个学弟学妹们写的几个最基本的MFC简单例子,

只适合刚学过C,完全没有接触过VC6,想MFC入门的同志,稍微有点基础的就不要看了~~

共5个例子,每个中都有说明文件,按顺序看完跟着做完,自己再练一下基本就可以掌握了。

Aug 19
因为Vista挂掉的原因使得我Wubi安装的Ubuntu 8.04 Hardy启动后只能引导到一个叫做什么Busybox的sh shell界面,没有读取root.disk,上网搜了一下,有一个解决办法是,打开grub的menu.lst,或者直接在grub界面按e进入修改模式,找到这一行:
kernel    /boot/vmlinuz-2.6.24-21-generic root=UUID=2874D2DE74D2AE36 loop=/ubuntu/disks/root.disk ro quiet splash
删掉quiet splash, 换成irqpoll  回车,按下b键(boot)然后等两三分钟,终于进入了可爱的Ubuntu...
Tags:
Aug 18
Aug 17

Felix的vimrc (vim配置文件) 不指定

felix021 @ 2008-8-17 06:10 [IT » 软件] 评论(2) , 引用(0) , 阅读(9804) | Via 本站原创
已经移动到了我的GitHub上:

https://github.com/felix021/myenv/blob/master/.vimrc


=== 以下请忽略 ===


旧版本就不留了,一旦有最新的,我就直接覆盖了

--
@ 2010-12-22 设置dir参数,让.swp文件保存在同一个目录下(详情help directory)
@ 2010-08-18 合并win和linux版本; 重新映射j/k到gj/gk,在自动换行的时候可以上下走动(而不是一次走好几行)。
@ 2010-07-19 linux版增加<C-\>快捷键映射,支持(安装了CTAGS)在新tab中打开光标下的单词
@ 2010-06-08 windows版更新对python文件的基本设置
@ 2010-04-03 windows版更新 G++编译增加一个-D__DEBUG__参数,给<F12>添加的模板增加一个用于调试的宏dp,使用类似printf。
@ 2009-09-12 加入makefile的noexpandtab
@ 2009-05-13 修改CPPSET等函数,在运行的时候打开另一个gnome-terminal; 改用xelatex编译tex文档
@ 2009-04-11 开启modeline, 增加set encoding,能够对付多种编码了:)
@ 2009-04-02
实现的功能是,语法高亮,自动缩进(4格),显示行号,突出当前行,状态栏显示文件路径信息和光标所在行列
F3 显示当前错误
F4 跳转到第一个错误
F5 注释当前行/选中行
F6 取消注释当前行/选中行
F7 显示错误列表
F8 本来是映射到调试,但是发现没什么用,就干脆取消掉了
F9 编译(支持C/C++/Java/PHP/TeX), 对应PHP就是运行,TeX就是pdflatex编译
Ctrl+F9 运行(支持C/C++/Java/PHP/TeX), PHP就是运行,TeX就是evince打开查看
F12 插入C++模板
CTRL+T是:tabedit新建一个tab
普通模式,TAB是:tabnext,下一个tab, SHIFT+TAB是:tabprevious,上一个TAB

编辑模式下快速输入ppp,自动替换为  printf("光标位置");
编辑模式下快速输入sss,自动替换为 scanf("光标位置");
编辑模式下快速输入if(, while(, for(都会自动把后续的){}补全,然后光标停留在()中间
编辑模式下快速输入#inc,自动替换为 #include<[光标位置]>
在普通模式下输入 [,n] 为取消搜索高亮  [,a] 为全选  [Ctrl+C]为复制  [,p] 为粘贴

....

更多功能自己发掘:D

以下是.vimrc的内容:
Tags:
Aug 17

zz: vimrc 文件的配置 不指定

felix021 @ 2008-8-17 01:46 [IT » 软件] 评论(0) , 引用(0) , 阅读(5201) | Via 本站原创
发现自己的Blog上居然没有一篇关于vim的日志,惭愧。。顺手转一篇吧。
最牛B的VIM配置见http://www.amix.dk/vim/vimrc.html ,不要照抄,不一定适合你,建议通读,学习如何配置。


以下内容转载自 http://bbs.linuxunion.net/showthread-t_463.html

vimrc 文件的配置
2007-01-22 21:57:49 / 个人分类:Linux C

/***************************************************************
*以下资料是从网上收集而来的,由于比较多,就没有注明转贴的地址了, *
*这里没有把VI 和 VIM 分开, 请不要跟不相关的贴. *
*http://vcd.gro.clinux.org/ 这里有很全的中文资料。
****************************************************************/
Tags:
分页: 65/103 第一页 上页 60 61 62 63 64 65 66 67 68 69 下页 最后页 [ 显示模式: 摘要 | 列表 ]