小编Yog*_*ora的帖子

什么是复制省略以及它如何优化复制和交换习惯用法?

我正在阅读复制和交换.

我尝试阅读Copy Elision上的一些链接,但无法弄清楚它的含义.有人可以解释一下这种优化是什么,特别是下面的文字是什么意思

这不仅仅是为了方便,而且实际上是一种优化.如果参数绑定到左值(另一个非常量对象),则在创建参数时会自动创建对象的副本.但是,当s绑定到rvalue(临时对象,文字)时,通常会省略该副本,从而保存对复制构造函数和析构函数的调用.在赋值运算符的早期版本中,参数被接受为const引用,当引用绑定到右值时,不会发生复制省略.这导致创建和销毁另外的对象.

c++ optimization copy-and-swap copy-elision

30
推荐指数
1
解决办法
8465
查看次数

boost或C++ 0x中的任何RAII模板

在boost中是否有可用的模板RAII.有像这样的类scoped_ptr,shared_ptr它基本上用于指针.这些类可以用于除指针之外的任何其他资源.是否有任何模板可以使用一般资源.

例如,在范围的开头获取的某些资源必须以某种方式在范围的末尾发布.获取和发布都需要一些步骤.我们可以编写一个模板,它需要两个(或者一个对象)仿函数来完成这个任务.我还没有想过如何实现这一点,我只是想知道有没有现成的方法来做到这一点

Edit: 如何在C++ 0x中支持lambda函数

c++ templates boost raii c++11

14
推荐指数
5
解决办法
5656
查看次数

vim:make会自动跳转到第一个文件并出错

执行时:make from vim,make完成后会自动跳转到有错误的文件.有没有办法避免这种情况

编辑

这是我希望实现的用例我想:make执行然后快速列表打开但是我正在处理的当前文件不应该切换到有错误的文件

使用以下默认设置:打开执行快速列表,当前文件也会更改

vim

12
推荐指数
2
解决办法
4477
查看次数

cscope类似于C++的功能(使用vim)

是否有任何实用程序或插件为C++提供类似cscope的功能.我在寻找

  • 所有对符号的引用
  • 全球定义
  • 函数调用的函数
  • 调用函数的函数
  • 文件包括文件

vim cscope

11
推荐指数
2
解决办法
9047
查看次数

什么是auto_ptr_ref,它实现了什么以及如何实现它

auto_ptr_ref文档在这里 说明了这一点

This is an instrumental class to allow certain conversions that allow auto_ptr objects to be passed to and returned from functions.

有人可以解释一下auto_ptr_ref如何帮助实现这一目标.我只是想了解auto_ptr类及其内部

c++ stl auto-ptr

10
推荐指数
1
解决办法
3476
查看次数

这两个类是否违反了封装?

class X
{
protected:
    void protectedFunction() { cout << "I am protected" ; }
};

class Y : public X
{
public:
    using X::protectedFunction;
};

int main()
{
    Y y1;
    y1.protectedFunction();
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以公开基类的一个功能.

  1. 这不违反封装原则吗?
  2. 是否有一个特定的原因,为什么这是标准的?
  3. 是否有任何用途,或者是否会在新标准中进行更改?
  4. 标准中是否存在与此相关的未解决问题?

c++ inheritance encapsulation

9
推荐指数
3
解决办法
1566
查看次数

如何在vim的Taglist窗口中显示变量

我在vim中使用Taglist插件.在taglist窗口中,我可以看到名称空间,类,结构,函数等标签,但不能看到变量.我在Taglist网站上看​​到了一个截图(附在下面),里面有这个信息.我正在使用Vim 7和Exuberant Ctags 5.8,并且我使用此命令生成了我的ctags

ctags --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++
Run Code Online (Sandbox Code Playgroud)

alt text http://vim-taglist.sourceforge.net/images/taglist_c.gif

vim taglist

9
推荐指数
1
解决办法
3034
查看次数

从double转换为float时检测精度损失

我正在编写一段代码,我必须将其从double转换为float值.我正在使用boost :: numeric_cast进行此转换,这将提醒我任何溢出/下溢.但是我也有兴趣知道这种转换是否会导致一些精确损失.

例如

    double source =  1988.1012;
    float dest = numeric_cast<float>(source);
Run Code Online (Sandbox Code Playgroud)

产生具有价值1988.1的dest

有没有什么方法可以检测到这种精确损失/舍入

c++ floating-point rounding-error rounding floating-accuracy

7
推荐指数
2
解决办法
4006
查看次数

如何在 vim 中为不同类型的缓冲区映射不同的键

我面临的问题是我已经映射了一些键和鼠标事件,以便在编辑文件时在 vim 中进行搜索。但是如果quickfix 缓冲区,这些映射会影响功能。

我想知道是否可以根据使用它们的缓冲区来映射键。

EDIT- 我正在为这个问题添加更多信息让我们考虑一个场景。我想映射<C-F4>以关闭缓冲区/窗口。现在这种行为可能取决于很多事情。

如果我正在编辑缓冲区,它应该关闭该缓冲区而不更改窗口的布局。我正在为此使用buffkil插件。

它不取决于文件的扩展名,而是取决于缓冲区的类型。我在 vim 文档中看到有未列出和列出的缓冲区。所以如果它被列出缓冲区,它应该使用 bufkill 命令关闭。

如果它不是列出的缓冲区,则应使用<c-w>c命令关闭缓冲区并更改窗口布局。

我是编写 vim 函数/脚本的新手,有人能帮我开始这个吗

vim

5
推荐指数
1
解决办法
1168
查看次数

如何在vim中捕获shift-tab

我想用于shift-tab自动完成和视觉上移动代码块。我一直指的是Make_Shift-Tab_work。该链接讨论了映射^[[Zshift-tab. ^[[Z但当我按下时我不明白shift-tab。在这种情况下我只是得到一个正常的tab

然后讨论如何使用xmodmap -pke | grep 'Tab' 映射 Tab 键。据此输出应该是

keycode 23 = Tab
or
keycode 23 = Tab ISO_Left_Tab
Run Code Online (Sandbox Code Playgroud)

不过我得到

keycode  22 = Tab KP_Tab
Run Code Online (Sandbox Code Playgroud)

如果我使用xmodmap -e 'keycode 22 = Tab ISO_Left_Tab'之后xmodmap -pke | grep 'Tab',我仍然得到

keycode  22 = Tab KP_Tab
Run Code Online (Sandbox Code Playgroud)

这意味着跑步xmodmap -e 'keycode 22 = Tab ISO_Left_Tab'没有任何效果。

最后,链接提到使用xev来查看X当我按下 时收到的内容shift-tabxev但我的系统上没有。

有没有其他方法可以在vim中捕获shift-tab

x11 keyboard vim xterm sunos

5
推荐指数
1
解决办法
4055
查看次数