小编Jus*_*tin的帖子

是否可以编写模板来检查函数的存在?

是否可以编写一个模板来改变行为,具体取决于是否在类上定义了某个成员函数?

这是我想写的一个简单例子:

template<class T>
std::string optionalToString(T* obj)
{
    if (FUNCTION_EXISTS(T->toString))
        return obj->toString();
    else
        return "toString not defined";
}
Run Code Online (Sandbox Code Playgroud)

所以,如果class T已经toString()确定的话,就使用它; 否则,它没有.我不知道怎么做的神奇部分是"FUNCTION_EXISTS"部分.

c++ templates sfinae template-meta-programming

458
推荐指数
20
解决办法
14万
查看次数

提升状态图与Meta状态机

显然,boost包含两个独立的状态机库:StatechartMeta State Machine(MSM).标语给出了非常相似的描述:

  • Boost.Statechart - 任意复杂的有限状态机可以用易于阅读和维护的C++代码实现.
  • 元状态机 - 用于富有表现力的UML2有限状态机的高性能库.

你知道两者之间的主要区别和选择考虑因素是什么?

c++ boost state-machine boost-statechart boost-msm

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

在C++ 11中编写通用记忆功能

寻找一种方法来实现一个通用的通用memoization函数,它将获取一个函数并返回相同的memoized版本?

在python中寻找像@memo(来自Norving的网站)装饰的东西.

def memo(f):
    table = {}
    def fmemo(*args):
        if args not in table:
            table[args] = f(*args)
        return table[args]
    fmemo.memo = table
    return fmemo
Run Code Online (Sandbox Code Playgroud)

更一般的是,有没有办法在C++中表达泛型和可重用的装饰器,可能使用C++ 11的新功能?

c++ memoization c++11

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

如何在C++中使用参考参数?

我试图了解如何使用参考参数.我的文本中有几个例子,但是它们太复杂了我无法理解为什么以及如何使用它们.

你想如何以及为什么要使用参考?如果您没有将参数作为参考,而是将其&关闭,会发生什么?

例如,这些功能之间的区别是什么:

int doSomething(int& a, int& b);
int doSomething(int a, int b);
Run Code Online (Sandbox Code Playgroud)

我知道引用变量用于更改形式 - >引用,然后允许参数的双向交换.然而,这是我的知识范围,更具体的例子会有很大帮助.

c++ reference-parameters

51
推荐指数
1
解决办法
8万
查看次数

如何使用IntelliJ IDEA进行Eclipse插件开发?

我必须为Eclipse开发一个插件,但我更喜欢IntelliJ IDEA作为IDE.是否可以为Eclipse插件开发配置IDEA?

eclipse-plugin intellij-idea eclipse-rcp

43
推荐指数
2
解决办法
6514
查看次数

Python多行语句

with在python中创建多行的简洁方法是什么?我想在一个单独的文件中打开几个文件with,但它足够远,我想要它在多行上.像这样:

class Dummy:
    def __enter__(self): pass
    def __exit__(self, type, value, traceback): pass

with Dummy() as a, Dummy() as b,
     Dummy() as c:
    pass
Run Code Online (Sandbox Code Playgroud)

不幸的是,那是一个SyntaxError.所以我尝试了这个:

with (Dummy() as a, Dummy() as b,
      Dummy() as c):
    pass
Run Code Online (Sandbox Code Playgroud)

还有一个语法错误.但是,这有效:

with Dummy() as a, Dummy() as b,\
     Dummy() as c:
    pass
Run Code Online (Sandbox Code Playgroud)

但是,如果我想发表评论怎么办?这不起作用:

with Dummy() as a, Dummy() as b,\
     # my comment explaining why I wanted Dummy() as c\
     Dummy() as c:
    pass
Run Code Online (Sandbox Code Playgroud)

\s 的位置也没有任何明显的变化.

是否有一种干净的方法来创建with允许在其中发表评论的多行语句?

python multiline with-statement python-3.x

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

Java:无限循环公约

Java中无限循环的约定是什么?我应该写while(true)还是for(;;)?我个人会使用,while(true)因为我经常使用while循环.

java conventions infinite-loop

39
推荐指数
5
解决办法
8万
查看次数

为Haskell积极开发和记录良好的GUI工具

我花了很多时间在早上和下午在Haskell中使用GUI框架,因为我需要一些可视化和交互功能,而且我不喜欢在Haskell中编写我的核心功能然后在前端写出来在另一个GUI中; 我宁愿用一种语言来做这一切.更好的部分更好的部分用于编译和修补源代码,或谷歌搜索模糊的编译错误.

我花了很多时间阅读SO问题,在haskell.org上有充足的时间,并且有充足的时间阅读文档.我遇到的是一大堆过时或记录不完整的信息.我可以归结为这三件事:

  1. 在Gtk +绑定之上构建了大量选项.我不喜欢的Gtk +非常多,主要是因为我觉得这是很碍眼,尤其是在OS X上发牢骚的UI看出来的地方和/或只是简单的丑陋似乎很傻,但重要的是要我.特别是如果我希望其他人使用我创建的任何程序.

  2. wxHaskell,稳定且非常容易安装,但许多现有的教程似乎是WX-0.1X和桥接wxWidgets的2.9.x的文档,以WX-0.90.x的约定是非常非常参差不齐,很难神交,什么时候他们甚至存在

  3. qtHaskell,这似乎是大多抛弃(纠正我,如果我错了),只能用GHC的新版本编译应用岁的补丁之后,并吐出这表明它们将很快成为编译错误警告的巨量更新版本的GHC.

实际上,我正在寻找Haskell对Java Swing的回答; 一个强大,维护,文档齐全,易于入门的图书馆,尝试在外观和感觉上保持原生,可以跟上GHC的发展速度,而不是放弃的高风险.这似乎正好是零GUI框架,但随后似乎最"官方"的资源/维基/页/关于GUI框架文档都远远没有维护,所以我决定把对社会,看看是否有什么我只是没找到.我不是非常担心框架是跨平台的,只要它适用于现代版本的OS X.

重申一下,我并不是真的想找个人给我发一个链接到haskell.org或WikiBook.我去过那里,我不喜欢我所看到的.那里的大多数信息都是过时的,它只能创造更多的工作,而不是更少.

我意识到我的"要求"有点极端,特别是对于像Haskell这样的小社区的语言,但我希望那里的某个人可以帮助我.与此同时,我打算只是试着骑出wxHaskell或qtHaskell直到我成功或死亡.

我希望我不要粗暴或疲惫不堪.

user-interface haskell

33
推荐指数
1
解决办法
1333
查看次数

Prime数字打印机停在251,为什么?

我今天开始学习Python,我想出了创建一个程序,打印从0到10 000的所有素数的想法.我设法让我的程序打印出所有质数,直到251,此时它停止打印出数字.为什么这样做?

这是代码:

for numberToCheck in range(2,10000):
    divider = 2
    while numberToCheck > divider:
        if numberToCheck % divider is 0:
            break
        else:
            divider += 1
    if numberToCheck is divider:
        print(numberToCheck, "is a prime number.")
Run Code Online (Sandbox Code Playgroud)

python

33
推荐指数
3
解决办法
1882
查看次数

std :: includes实际上做了什么?

标准 来看std::includes:

返回:trueif [first2, last2)为空或者范围中的每个元素[first2, last2)都包含在范围内[first1, last1).false否则返回.

注意:由于这是在[alg.set.operations]下,因此必须对范围进行排序

从字面上看,如果我们让,R1=[first1, last1)并且R2=[first2, last2),这是在评估:

?a?R2 a?R1
Run Code Online (Sandbox Code Playgroud)

但是,这不是实际评估的内容.for R1={1}R2={1,1,1},std::includes(R1, R2)返回false:

#include <algorithm>
#include <iomanip>
#include <iostream>
#include <vector>

int main() {
    std::vector<int> a({1});
    std::vector<int> b({1,1,1});

    // Outputs 'false'
    std::cout << std::boolalpha
        << std::includes(a.begin(), a.end(), b.begin(), b.end()) << '\n';
}
Run Code Online (Sandbox Code Playgroud)

住在Wandbox上

这是令人惊讶的.我用libstdc ++和libc ++验证了它,但是我认为这不是标准库实现中的一个错误,因为它是算法库的一部分.如果这不是std::includes应该运行的算法,那是什么?

c++ language-lawyer stl-algorithm c++17

31
推荐指数
1
解决办法
1473
查看次数