小编pyo*_*yon的帖子

使用模板元编程在C++中进行"深层"功能

我刚刚在C++中使用模板元编程实现了一个(又一个!)函数currying的实现.(我几乎可以肯定其他实现比我的更好/更完整,但我这样做是为了学习目的,我认为重新发明轮子是合理的.)

我的功能currying实现,包括测试用例,如下:

#include <iostream>
#include <functional>

template <typename> class curry;

template <typename _Res>
class curry< _Res() >
{
  public:
    typedef std::function< _Res() > _Fun;
    typedef _Res _Ret;

  private:
    _Fun _fun;

  public:
    explicit curry (_Fun fun)
    : _fun(fun) { }

    operator _Ret ()
    { return _fun(); }
};

template <typename _Res, typename _Arg, typename... _Args>
class curry< _Res(_Arg, _Args...) >
{
  public:
    typedef std::function< _Res(_Arg, _Args...) > _Fun;
    typedef curry< _Res(_Args...) > _Ret;

  private:
    class apply
    {
      private:
        _Fun _fun;
        _Arg …
Run Code Online (Sandbox Code Playgroud)

c++ functional-programming

14
推荐指数
1
解决办法
1262
查看次数

Code golf:反向quine

编写一个程序,将其源代码的反转输出为字符串.如果来源是

abcd
efg
Run Code Online (Sandbox Code Playgroud)

(即C字符串"abcd\nefg")

那么输出应该是

gfe
dcba
Run Code Online (Sandbox Code Playgroud)

(即C字符串"gfe\ndcba")

使用诸如brainf*ck等深奥语言的加分点.


*编辑:**删除了不必要的\ 0字符.+

code-golf

13
推荐指数
7
解决办法
3101
查看次数

如何在JavaScript中评估三元运算符?

关于? :JavaScript中的ternary()运算符,我想知道它是如何通过典型浏览器的JavaScript解释器进行评估的:

备选方案A:

  1. 评估第一个操作数.
  2. 如果第一个操作数的结果为true,则计算并返回第二个操作数.
  3. 否则,评估并返回第三个操作数.

备选方案B:

  1. 评估所有三个操作数.
  2. 如果第一个操作数的结果为true,则返回第二个操作数的结果.
  3. 否则,返回第三个操作数的结果.

备选方案C:

当然,如果替代A和替代B都没有准确描述三元运算符的工作原理,请解释它是如何工作的.

javascript ternary-operator

13
推荐指数
2
解决办法
3030
查看次数

有没有办法将属性的setter传递给委托?

我知道这个问题已被提出,但这次我有两个额外的限制:

  1. 不能使用反射.

  2. 我不想在属性的setter周围传递一个包装器.我想通过setter本身:

    // NO! NO! NO!
    myObject.MyMethod(value => anotherObject.AnotherProperty = value);
    
    Run Code Online (Sandbox Code Playgroud)

c# delegates properties

12
推荐指数
3
解决办法
8529
查看次数

jQuery是否有任何函数来确定jQuery对象引用的DOM元素的标记类型?

jQuery是否有任何函数来确定jQuery对象引用的DOM元素的标记类型?我正在写一个jQuery插件和...

jQuery.fn.myPlugin() {
    return this.each(function() {
       var $this = $(this);
       // <---------------------------------------HERE!
    });
}
Run Code Online (Sandbox Code Playgroud)

我想知道if this<input>元素还是<div>元素,而不直接使用DOM.

jquery dom

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

在相同的输入迭代器范围内并排运行两个<algorithm>

如果我想计算从a中检索到的一堆数字的总和std::istream,我可以执行以下操作:

// std::istream & is = ...
int total = std::accumulate(std::istream_iterator<int>(is),
                            std::istream_iterator<int>(),
                            0);
Run Code Online (Sandbox Code Playgroud)

但是,如果我想计算它们的平均值,我需要累积两个不同的结果:

  • 总和(std::accumulate)
  • 总数(std::distance)

有没有办法"合并"这两种算法并在迭代器范围的单次传递中"并排"运行它们?我想做的事情如下:

using std::placeholders;
int total, count;
std::tie(total, count) = merge_somehow(std::istream_iterator<int>(is),
                                       std::istream_iterator<int>(),
                                       std::bind(std::accumulate, _1, _2, 0),
                                       std::distance);
double average = (double)total / count;
Run Code Online (Sandbox Code Playgroud)

这可能吗?

c++ algorithm iterator istream-iterator stl-algorithm

9
推荐指数
2
解决办法
281
查看次数

为Mac开发?

作为一名程序员,我几乎陷入了Windows世界.我花了很多时间和精力学习MFC,ATL和最近的.NET(主要是WinForms,我现在对Web开发不感兴趣).由于我没有Parallels(并且在接下来的几个月内不会购买任何软件或硬件),我现在无法负担运行旧的Windows应用程序,所以我想将它们移植到Mac上.

我的主要问题是:

  1. 我读过有两个主要的API,Carbon和Cocoa.你建议我先学习哪一个?(我不知道Objective-C,但我并不反对学习它.)
  2. Mac的主要开发工具(IDE,调试器等)有哪些?
  3. 是否有任何框架或RAD工具可以帮助创建窗口(我更喜欢类似MFC的方法来实现类似VB的拖放编辑器).
  4. 我目前的技能是否可以帮助我学习为Mac编程,还是我必须从零开始?

macos frameworks

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

PHP的逻辑运算符是否像JavaScript一样工作?

我最喜欢JavaScript的一个原因是逻辑运算符非常强大:

  • && 可以用来安全地提取对象字段的值,如果对象或字段尚未初始化,则返回null

    // returns null if param, param.object or param.object.field
    // have not been set
    field = param && param.object && param.object.field;
    
    Run Code Online (Sandbox Code Playgroud)
  • || 可用于设置默认值:

    // set param to its default value
    param = param || defaultValue;
    
    Run Code Online (Sandbox Code Playgroud)

PHP是否也允许使用逻辑运算符?

php operator-precedence logical-operators

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

C#2.0中的HashSet替换

List<T>在我的项目中使用,此列表包含数百个条目.我使用List.Contains方法相当多,这会伤害性能,我用字典替换了List但是它导致了内存瓶颈,从而使性能更差.是否有更好的解决方案可以建议在List中搜索?是否有替换HashSet<T>C#2.0或其他一些内存和速度更好的方式?

c#-2.0

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

如何编写一个将自身作为回调传递的匿名函数/ lambda?

我正在学习boost :: asio和C++ 11.我的一个测试程序,实际上是对boost :: asio教程中给出一个示例的改编,如下所示:

#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>

class printer {

// Static data members
private:
    const static boost::posix_time::seconds one_second;

// Instance data members
private:
    boost::asio::deadline_timer timer;
    int count;

// Public members
public:
    printer(boost::asio::io_service& io)
        : timer(io, one_second), count(0) {

        std::function<void(const boost::system::error_code&)> callback;
        callback = [&](const boost::system::error_code&) { // critical line
            if (count < 5) {
                std::cout << "Current count is " << count++ << std::endl;

                timer.expires_at(timer.expires_at() + one_second);
                timer.async_wait(callback);
            }
        }; …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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