小编sta*_*ror的帖子

用Java 8实现集合的Cartesian产品

现在我只能实现两个集合的笛卡尔积,这里是代码:

public static <T1, T2, R extends Collection<Pair<T1, T2>>>
R getCartesianProduct(
        Collection<T1> c1, Collection<T2> c2,
        Collector<Pair<T1, T2>, ?, R> collector) {
    return c1.stream()
            .flatMap(e1 -> c2.stream().map(e2 -> new Pair<>(e1, e2)))
            .collect(collector);
}
Run Code Online (Sandbox Code Playgroud)

这段代码在IntelliJ中工作正常,但在Eclipse中没有(编译器合规级别为1.8):

The method collect(Collector<? super Object,A,R>) 
in the type Stream<Object> is not applicable for 
the arguments (Collector<Pair<T1,T2>,capture#5-of ?,R>)
Run Code Online (Sandbox Code Playgroud)

这是Pair.java:

public class Pair<T1, T2> implements Serializable {
    protected T1 first;
    protected T2 second;
    private static final long serialVersionUID = 1360822168806852921L;

    public Pair(T1 first, T2 second) …
Run Code Online (Sandbox Code Playgroud)

java generics collections java-8 java-stream

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

Flex似乎不支持正则表达式先行断言(快速lex分析器)

当我尝试在flex中使用正则表达式时,如下定义一个int类型:

int    (?<!\w)(([1-9]\d*)|0)(?!\w)
Run Code Online (Sandbox Code Playgroud)

我打算让这个无效:

int a = 123;
int b = 123f; //the '123' should not filtered as an int type
Run Code Online (Sandbox Code Playgroud)

但是,我得到了这个:

bad character: <
bad character: !
bad character: \
...
Run Code Online (Sandbox Code Playgroud)

而且,似乎?正则表达式中的正则表达式被忽略了.我很困惑.flex不支持前瞻断言(?<=xxx)(?<!xxx)

我是flex的新手,我真的需要一些帮助

regex flex-lexer

7
推荐指数
1
解决办法
3588
查看次数

如何使用 CMake 在 Ubuntu 中查找和链接 OpenGL(mesa) 包

我是CMakeOpenGL 的新手。我现在需要在我的 Ubuntu 15.04 64 位 PC 上的项目中使用OpenGL作为库,该 PC 由CMake 3.0.2构建。

我已经为此工作了几天,几乎感到沮丧。我对一堆问题感到困惑。


台面和 OpenGL

首先,我使用 command安装了mesasudo apt-get install mesa-common-dev,这让我得到了mesa 10.5.2

然后我浏览包文件dpkg -L mesa-common-dev

/.
/usr
/usr/share
/usr/share/bug
...
/usr/share/bug/mesa-common-dev/control

/usr/share/doc
...
/usr/share/doc/mesa-common-dev/faq.html

/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/pkgconfig
/usr/lib/x86_64-linux-gnu/pkgconfig/dri.pc

/usr/include
/usr/include/GL
/usr/include/GL/gl.h
...
/usr/include/GL/glx_mangle.h
Run Code Online (Sandbox Code Playgroud)

问题 1:共享库 (.so) 和静态库 (.a) 在哪里?


制作

我现在有一个CMakeLists.txt, 名为 OpenGL 模块OPENGL

...
find_package(OPENGL REQUIRED)  # here is CMakeLists.txt:45
... …
Run Code Online (Sandbox Code Playgroud)

opengl cmake mesa

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

对扩展现有枚举类型的泛型感到困惑

问题 1:我对这些代码有点困惑:

public class MyClass1 <E extends Enum<?>> {
    // ...
}
public class MyClass2 <E extends Enum<E>> {
    // ... 
}
Run Code Online (Sandbox Code Playgroud)

MyClass1和之间有什么不同MyClass2,这三个不同E意味着什么?

问题 2:从Class Enum <E extends Enum<E>>

这是所有Java语言枚举类型的公共基类。

但不是所有Enum类型的共同基类吗Enum<E>

问题 3:现在我有这门课:

public class MyClass<E extends Enum<E>> {

    // for example, EnumSet<Category> 
    public Set<E> category; 

    // how to initial this member
    private Class<E> enumType; 

    // initial this.category with given strings
    public void getEnumSetFromStringList(List<String> list) {
        this.category = EnumSet.noneOf(enumType); …
Run Code Online (Sandbox Code Playgroud)

java generics enums interface type-erasure

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

模板和非模板函数之间的C++重载解析

我对模板和非模板函数之间的c ++重载解析感到困惑,以下是示例:

class Stream {};

struct M
{
    M(float v) {}
};

template <class T>
Stream& operator<<(Stream& stream, T& v) {}

Stream& operator<<(Stream& stream, const M& v) {}

int main()
{
    Stream stream;
    int a = 1;

    stream << a; // sample 1
    stream << a * a; // sample 2

    return;
}
Run Code Online (Sandbox Code Playgroud)

这里,示例1调用模板函数.示例2提供了一个int&&类型参数,可以隐式地转换const M&为非模板,而不是模板T = const int.

样本2的重载分辨率会发生什么?

c++ templates overload-resolution

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