归档 2010年6月20日

最后更新于 .

之前有朋友在博客里希望我能列出自己使用的所有Vim插件,一直没有时间,趁周末的最后的几个小时,就给大家列一下,大家可以实行拿来主义,取自己需要的,呵呵~ OK,一个个来说吧~~

plugin:

  • 编程相关:
    • 公共:
      • taglist 相信无人不知其大名,用来提供单个源代码文件的函数列表之类的功能。最近在使用一个针对面向对象语言的类似插件-tagbar.vim,也很不错。
      • NERD_commenter 提供快速注释/反注释代码块的功能
      • DoxygenToolkit.vim 添加doxygen注释
      • UltiSnips 提供超强的快速生成代码段的功能(超越snipmate)
      • mark.vim 给不同的单词高亮,表明不同的变量时很有用。(特别说明一下,vim.org上有两个Mark.vim,请使用链接中指向的那个,另外一个是有bug的)
      • authorinfo 自动生成/更新文件的作者信息(本博编写)
      • checksyntax  一个通用的语法检查插件,支持c,js,等等
      • Indent Guides 用来帮助缩进对齐的插件,需要的时候会很好用
    • c/c++:

最后更新于 .

其实我想只要能看到这篇博客的朋友,又是学过C/C++的都应该知道,如果一个对象需要作为函数调用的一个参数,同时对象分配的内存又非常大的时候,应该使用const T&来作为参数。

虽然知道这一点,但是我还是经常会在传递string参数的时候,直接不使用引用,今天仔细看了一下string的写时copy,突然想到,大家看到string就要求传递引用会不会只是一种惯性驱使呢,string的copy真的会把分配的内存全部copy一遍?

我们其实做一个简单的实验就知道了,代码如下:

#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
void test1(string c)
{
    printf("c[%u]\n",c.c_str());
}
void test2(const string& d)
{
    printf("d[%u]\n",d.c_str());
}
void test3(const string e)
{
    printf ...

昨天

2010年6月18日

明天

2010年6月25日

归档