小编Ale*_*x B的帖子

C++ 11基于反向范围的for-loop

是否有一个容器适配器可以反转迭代器的方向,所以我可以反向迭代一个容器,基于范围的for循环?

使用显式迭代器,我会将其转换为:

for (auto i = c.begin(); i != c.end(); ++i) { ...
Run Code Online (Sandbox Code Playgroud)

进入这个:

for (auto i = c.rbegin(); i != c.rend(); ++i) { ...
Run Code Online (Sandbox Code Playgroud)

我想转换这个:

for (auto& i: c) { ...
Run Code Online (Sandbox Code Playgroud)

对此:

for (auto& i: std::magic_reverse_adapter(c)) { ...
Run Code Online (Sandbox Code Playgroud)

有这样的事情还是我必须自己写?

c++ c++11 ranged-loops

309
推荐指数
8
解决办法
10万
查看次数

如何在JAR中捆绑本机库和JNI库?

有问题的图书馆是东京内阁.

我想要在一个JAR文件中包含本机库,JNI库和所有Java API类,以避免重新分发问题.

似乎在GitHub尝试了这个,但是

  1. 它不包括实际的本机库,只包括JNI库.
  2. 它似乎特定于Leiningen的native dependencies插件(它不能用作可再发行的插件).

问题是,我可以将所有内容捆绑在一个JAR中并重新分发吗?如果有,怎么样?

PS:是的,我意识到它可能具有可移植性的含义.

java java-native-interface jar clojure tokyo-cabinet

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

什么是"自旋锁"?

我总是想知道它们是什么:每当我听到它们的时候,未来派飞轮式设备的图像就会在我脑海里跳舞(滚动?)......

这些是什么?

spinlock

94
推荐指数
5
解决办法
6万
查看次数

检测CPU架构编译时

在编译C或C++代码时,找出CPU架构最可靠的方法是什么?据我所知,不同的编译器有自己的一套非标准预处理器定义(_M_X86在MSVS中__i386__,__arm__在GCC 中等).

有没有一种标准的方法来检测我正在构建的架构?如果没有,是否有各种编译器的这种定义的综合列表的来源,例如包含所有样板#ifdef的标题?

c c++ cpu-architecture detection compile-time

76
推荐指数
6
解决办法
6万
查看次数

克隆不是克隆选择值

我没想到,但是下面的测试在克隆值检查上失败了:

test("clone should retain values of select", function() {
    var select = $("<select>").append($("<option>")
                              .val("1"))
                              .append($("<option>")
                              .val("2"));
    $(select).val("2");
    equals($(select).find("option:selected").val(), "2", "expect 2");
    var clone = $(select).clone();
    equals($(clone).find("option:selected").val(), "2", "expect 2");
});
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?

jquery

72
推荐指数
6
解决办法
4万
查看次数

C++ 11"自动"语义

当我使用C++ 11时auto,关于它是否会解析为值或引用的类型推导规则是什么?

例如,有时很明显:

auto i = v.begin(); // Copy, begin() returns an iterator by value
Run Code Online (Sandbox Code Playgroud)

这些不太清楚:

const std::shared_ptr<Foo>& get_foo();
auto p = get_foo(); // Copy or reference?

static std::shared_ptr<Foo> s_foo;
auto sp = s_foo; // Copy or reference?

std::vector<std::shared_ptr<Foo>> c;
for (auto foo: c) { // Copy for every loop iteration?
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

如何在Linux或Windows中编译OS X?

我想将我的C/C++应用程序移植到OS X.

我没有Mac,但我有Linux和Windows.这有什么工具吗?

c c++ macos cross-compiling

68
推荐指数
5
解决办法
7万
查看次数

我为什么要在Clojure中使用'apply'?

这就是Rich Hickey在其中一篇博文中所说的,但我不明白使用apply的动机.请帮忙.

Clojure和CL之间的一个很大区别是Clojure是一个Lisp-1,因此不需要funcall,apply仅用于将函数应用于运行时定义的参数集合.因此,(apply f [i])可以写成(fi).

另外,"Clojure是Lisp-1"是什么意思,不需要funcall?我从未在CL编程.

谢谢

lisp clojure

44
推荐指数
4
解决办法
2万
查看次数

C++ 11 lambdas:成员变量捕获陷阱

考虑以下代码:

#include <memory>
#include <iostream>

class A
{
public:
    A(int data) : data_(data)
    { std::cout << "A(" << data_ << ")" << std::endl; }
    ~A() { std::cout << "~A()" << std::endl; }
    void a() { std::cout << data_ << std::endl; }
private:
    int data_;
};

class B
{
public:
    B(): a_(new A(13)) { std::cout << "B()" << std::endl; }
    ~B() { std::cout << "~B()" << std::endl; }
    std::function<void()> getf()
    {
        return [=]() { a_->a(); };
    }
private:
    std::shared_ptr<A> a_;
}; …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

解释"领导者/追随者"模式

我似乎无法找到"领导/追随者"模式的良好和可访问的解释.所有解释或者只是在某些问题的背景下引用它,或者完全没有意义.

任何人都可以给解释机制的这种模式是如何工作的,以及为什么以及如何改进了更传统的异步IO模型的性能?图表的示例和链接也很受欢迎.

concurrency design-patterns

39
推荐指数
1
解决办法
9702
查看次数