小编Tom*_*men的帖子

从C++代码调用Haskell

我目前正在用C++编写一个应用程序,发现它的一些功能可以更好地用Haskell编写.我已经看过从C代码调用Haskell的说明,但是可以用C++做同样的事情吗?

编辑:澄清一下,我正在寻找的是一种将Haskell代码编译成外部库的方法,g ++可以与C++中的目标代码链接.

更新:我已经为其他感兴趣的人提供了一个工作示例(也是我不会忘记的).

c++ linker haskell ffi

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

如何将 std::set 与将投影应用于键的比较器一起使用?

假设我有一组(或映射)字符串,并且我想使用仅比较前 5 个字符的自定义比较器。所以“abcde”和“abcdef”在我的集合中是相同的。

using MySet = std::set<std::string, Cmp>;
Run Code Online (Sandbox Code Playgroud)

编写 Cmp 的最佳方式是什么?

明显的方法是这样的:

struct Cmp
{
    bool operator()(const string& x, const string& y) const
    {
        return x.substr(0, 5) < y.substr(0, 5);
    }
};
Run Code Online (Sandbox Code Playgroud)

问题是这段代码重复了.substr(0, 5)。在这个例子中它很短,但在一般情况下它可能会更长。我想避免这个重复的代码。

一般来说,给定类型T1, T2和函数T2 key(T1& const),我想要一组T1根据 进行比较的元素key(a) < key(b),其中比较 onT2已经明确定义。写这个的最好方法是什么?我考虑过编写一个新的class KeyBaseSet,但这对于我的单一用例来说是过度设计的。有什么方法可以使用stdBoost 来做到这一点吗?

我正在寻找类似于keyPython 中排序时的参数(https://docs.python.org/3/howto/sorting.html#key-functions),或compare `on` Haskell 中的习惯用法(https://stackoverflow.html)。 com/a/2788262/351105)。

c++ stdset

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

在计算机上查找可用的网络端口

我正在尝试在linux中实现一个简单的FTP服务器(EFTP协议的一种变体).当客户端连接并发送PASV命令时,服务器应使用端口号进行响应,以便客户端可以连接到该端口以传输文件.服务器如何选择端口号?我是否需要遍历1024到65535之间的所有端口,直到找到进程可以绑定的端口为止?
我知道调用bind()和0作为端口会自动选择要绑定的端口,但是我怎么知道选择了哪个端口?

非常感谢.

c sockets linux

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

标签 统计

c++ ×2

c ×1

ffi ×1

haskell ×1

linker ×1

linux ×1

sockets ×1

stdset ×1