小编das*_*och的帖子

C++解释器/控制台/代码段编译器

我正在寻找一个程序,我可以在一个窗口中输入C++代码片段,按一个按钮,然后在另一个窗口中输出.编辑应该以某种方式隐藏在按钮后面.在每个片段的基础上会很好,完全互动可能要求太多.它应该在Linux/Unix下运行.主要用例是学习/测试/简短调试等.

我找到的相关内容:

- python的Reinteract项目(我告诉sage有类似的功能)

- 这里是C#的相同线程:C#Console?

- 来自CERN ROOT项目的CINT解释器(可能很接近,但也许有更舒适的应用程序)

- 一些名为Quickly Compile或Code Snippet的程序,它们是M $.

c++ console interpreter interactive

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

C++ tr1 unordered_set随机唯一子集的最快方法

这个问题关系到 这一个,并更准确地这样回答.

这里是:我有一个U无符号整数的C++/TR1 unordered_set (粗基数100-50000,粗略值范围0到10 ^ 6).鉴于基数N,我希望尽可能快地迭代N随机但独特的成员U.没有典型值N,但它应该对小的快速工作N.

更详细地说,这里的"随机性"的概念是两个调用应该产生稍微不同的子集 - 越不同,越好,但这不是太关键.只要块的起始索引是随机NU,我就会对连续(或包裹的连续)成员块感到满意.以相同的成本不连续更好,但主要关注的是速度.U温和地改变,但在呼叫之间不断变化(在呼叫之间插入/删除大约0-10个元素).

我到底有多远:

  1. 平凡的方法:
    选择随机指标i这样(i+N-1) < |U|.获取迭代器,使用它itU.begin()推进它,然后在子集上启动实际循环.优点:容易.缺点:浪费++.iit++

  2. 桶的做法(这我有"新",从上面的链接导出):
    选择i如上,发现桶b中的i个元素是,获得local_iterator litU.begin(b),提前lit通过lit++,直到我们打i的个元素U,并从此不断递增litN时间.如果我们到达桶的末尾,我们lit将从下一个桶的开头继续.如果我想让它更随机,我可以i完全随机选择并包裹桶.

我的开放性问题:

  1. 对于上面的第2点,是否真的是U我找不到i-th元素时我不能以某种方式得到迭代器?这样可以省去桶边界控制等等.对于我来说,作为一个初学者,标准的前向迭代器应该知道如何 …

c++ random algorithm subset unordered-set

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