小编Riv*_*ver的帖子

在C++中设置STL的底层数据结构是什么?

我想知道如何在C++中实现一个集合.如果我在不使用STL提供的容器的情况下实现自己的set容器,那么最好的方法是什么呢?

我理解STL集基于二叉搜索树的抽象数据结构.那么底层数据结构是什么?数组?

另外,如何insert()为一组工作?set如何检查元素是否已经存在?

我在维基百科上读到,实现集合的另一种方法是使用哈希表.这怎么样?

c++ set

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

在Java 8中使用Lambda对ArrayList进行排序

有人能告诉我一个快速的例子,说明如何ArrayList使用新的lambda语法在Java 8中按字母顺序排序.

java lambda functional-programming java-8

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

为什么我不能在显式实现接口的类中调用方法?

这是故事.我创建了一个界面IVehicle.我明确地在我的类中实现了接口Vehicle.cs.

这是我的界面:

Interface IVehicle
{
        int getWheel();
}
Run Code Online (Sandbox Code Playgroud)

这是我的班级:

class Vehicle: IVehicle
{

     public int IVehicle.getWheel()
     {
         return wheel;
     }

     public void printWheel()
     {
         Console.WriteLine(getWheel());
     }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这getWheel()是明确实现的.现在,当我尝试在我的Vehicle类中调用该方法时,我收到一个错误,指示getWheel()当前上下文中不存在该错误.有人能帮助我理解我做错了什么吗?

c# explicit interface

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

Java中的概率

我很想知道,我如何在Java中实现概率?例如,如果显示变量的可能性是1/25,那么我该如何实现呢?或任何其他概率?请指出我的总体方向.

java probability

37
推荐指数
4
解决办法
5万
查看次数

什么是Java中的本机实现?

如果我们查看Java Object类,那么我们可以找到一些方法,如:

public native int hashCode()
protected native Object clone()
Run Code Online (Sandbox Code Playgroud)

这些本地人是什么?这些方法如何运作?

java java-native-interface

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

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

检查项目是否在列表中(Lisp)

检查项目是否在列表中的简单方法是什么?

就像是

(in item list)
Run Code Online (Sandbox Code Playgroud)

可能返回true如果item=1list=(5 9 1 2)false,如果item=7

lisp list common-lisp

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

如果我的地图需要比快速更小,我应该使用哪种Map <K,V>实现?

我习惯性地HashMap在我的程序中使用,因为我知道它通常是最有效的(如果使用得当)并且可以轻松应对大型地图.我知道EnumMap哪个对于枚举键非常有用,但是我经常会生成一个永远不会很大的小地图,很快就会被丢弃,并且没有并发问题.

HashMap<K,V>这些小型,本地和临时用途是否过于复杂?在这些情况下,我可以使用另一个简单的实现吗?

我想我在寻找一个Map它类似于实施ArrayListList.它存在吗?


在回复之后添加:

这是一个缓慢但非常简单的实现可能更好的场景- 当我有很多很多这样Map的时候.例如,假设我有一百万左右的这些微小的小地图,每个地图都有少量(通常少于三个)条目.我的参考率很低 - 也许我实际上并没有在大部分时间丢弃之前引用它们.它仍然HashMap是最好的选择吗?

资源利用率不仅仅是速度 - 例如,我想要的东西不会破坏堆积很多并且使GC需要很长时间.

这可能HashMap是正确的答案,但这不是过早优化的情况(或者至少可能不是).


经过一番思考后添加了很多:

我决定手工编写自己的代码SmallMap.很容易制作一个AbstractMap.我还添加了几个构造函数,以便SmallMap可以从现有构造中构造Map.

在此过程中,我不得不决定如何表示Entrys并实现SmallSetentrySet方法.

我通过编码(并对其进行单元测试)学到了很多东西,并希望分享这个,以防其他人想要一个.它在github 这里.

java collections dictionary

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

实现future :: then()等效于c ++ 11中的异步执行

then()Herb Sutter的演讲中有一些关于函数实现的问题.此函数用于链接异步操作,参数f是一个操作的未来,参数w是此操作的"工作"(lambda).

template <typename Fut, typename Work>
auto then(Fut f, Work w) -> future<decltype(w(f.get()))>
{
    return async([=]{ w(f.get()); });
}
Run Code Online (Sandbox Code Playgroud)

申请的一个例子是:

    std::future<int> f = std::async([]{
        std::this_thread::sleep_for(std::chrono::microseconds(200));
        return 10;
    });

    auto f2 = then(std::move(f), [](int i){
        return 2 * i;
    });
Run Code Online (Sandbox Code Playgroud)

主线程产生任务但不等待它们中的任何一个完成.

首先,future<T>没有复制构造函数.这意味着,shared_future<T>除非我们将调用更改async()为将未来移动到lambda ,否则建议的实现只能用于.这个问题提出了一种方法,但似乎太复杂了.我重新实现了这个功能,我想知道我的代码是否正确或是否遗漏了一些东西......

其次,传递给then()函数的未来可能是void这样,我们实际上需要2个实现then(),对吧?一个用于期货回归T,一个用于期货回归void.

最后,如果body内的lambda then()没有return语句,那么我们实际上可以返回值吗?如果没有return语句,那么返回future<void>吧?

我试图解决上述问题,这就是我想出的.这是对的吗?

template <typename T, typename …
Run Code Online (Sandbox Code Playgroud)

c++ concurrency asynchronous c++11

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

Java - 从ArrayList中删除最后一个已知项

好的,所以这是我的ArrayList:

private List<ClientThread> clients = new ArrayList<ClientThread>();
Run Code Online (Sandbox Code Playgroud)

这就是我想要做的事情:
我正在尝试删除ArrayList上面发布的最后一个已知项目.我正在尝试使用以下代码执行此操作:

    } catch(SocketException re) {


                            String hey = clients.get(clients.size());
                            ClientThread.remove(hey);
                            System.out.println(hey + " has logged out.");
                            System.out.println("CONNECTED PLAYERS: " + clients.size());
}
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

C:\wamp\www\mystikrpg\Server.java:147: incompatible types
found   : Server.ClientThread
required: java.lang.String
                        String hey = clients.get(clients.size());
                                                ^
C:\wamp\www\mystikrpg\Server.java:148: cannot find symbol
symbol  : method remove(java.lang.String)
location: class Server.ClientThread
                        ClientThread.remove(hey);
                                    ^
2 errors
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?它应该删除我的最后一个已知项目ArrayList.

java arraylist

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