小编ant*_*ric的帖子

Boost.Asio - 在调用处理程序之前使用 std::move

我对经常看到的 Boost.Asio 习惯用法感到困惑 - 像这样调用处理程序(函数对象):

std::move(handler)(param1, param2);
Run Code Online (Sandbox Code Playgroud)

这样写的原因是什么?我的理解是,这与

handler(param1, param2);
Run Code Online (Sandbox Code Playgroud)

除非处理程序的operator()方法是 ref 限定的&&(有关 ref 限定的信息,请参阅此处的“具有 ref 限定符的成员函数” )。这是值得期待的吗?我从未真正见过这个习语与 ref-qualified 配对operator(),所以这似乎是一个不太可能的解释。

例子:

c++ boost boost-asio move-semantics

6
推荐指数
1
解决办法
179
查看次数

为什么必须在套接字函数中传递sizeof?

我期待到用C socket编程,我很好奇,为什么你要传递一个参数,并在样功能的该参数的长度bind()connect()?为什么不在sizeof()函数内部使用?

c sockets

3
推荐指数
1
解决办法
159
查看次数

C++中涉及new和delete []函数的奇怪错误

我正在编写关于Coursera的算法:设计和分析课程(https://www.coursera.org/course/algo)的第一个编程作业.它涉及使用合并排序来计算反转(http://en.wikipedia.org/wiki/Inversion_(discrete_mathematics)).我认为这将是一个相对明智的因为我之前(在学校)遇到过合并排序.

#include <iostream>
#include <fstream>

using namespace std;

int *half(int *array, int n, int start, int end)
{
    /*
     * Creates a new array which contains elements from ''array'' starting with ''start''
     * and ending with ''end - 1''.
     */

     int *new_array = new int[end-start];

     for(int i = start; i < end; i++)
     {
        new_array[i-start] = array[i];
     }

     return new_array;
}

int merge(int *array1, int n1, int *array2, int n2, int *new_array)
{
    /* …
Run Code Online (Sandbox Code Playgroud)

c++ malloc merge mergesort segmentation-fault

2
推荐指数
1
解决办法
1046
查看次数