问题标签 [iota]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
8481 浏览

enums - 类型化常量声明列表

我希望创建一个具有以下属性的“类枚举”常量列表:

  1. 每个标识符的值是连续的,有一些间隙。(我相信 iota 和空白标识符在这方面有帮助)。
  2. 标识符是模块私有的。
  3. 这些常量只能与相同类型的其他常量进行比较。

枚举基于enum fuse_opcode来自FUSE。这是我想要完成的一些代码(也是非常错误的):

0 投票
2 回答
403 浏览

c++ - 他们为什么不添加iota的运营商版本?

iota 模板函数被添加到标准库中,以用递增的值序列填充迭代器范围。

大多数其他模板<numeric>都有接受用户指定运算符的版本。有这个:

如果您不想(或不能)为 Tp 重载 operator++() 会很方便。我会发现这个版本比默认的 operator++() 版本更有用。<

0 投票
3 回答
1421 浏览

c++ - 如何为 std::fill() 使用 C++0x lambdas 局部变量?

所以我试图测试一个 lambda 在它使用的范围内访问局部变量,大致基于 Bjarne 在 C++0x FAQS 页面上的一个简单示例: http ://www2.research.att.com/ ~bs/C++0xFAQ.html#lambda

当我尝试这个简单的测试代码时:

我得到错误:

我假设这个 errmsg 表明 std::fill() 签名需要一个 const Type& 才能用于新的值元素分配。

但是,如果我能够为此目的使用 fill(),如 Bjarne 的示例所示,我不需要在 lambda 捕获子句中使用引用 '[&count]' 来重新分配原始通过'return ++count;'索引元素值和递增计数var lambda 语句块?

我承认我还不太了解这些 lambda!:)

0 投票
4 回答
1339 浏览

c++ - 什么是 iota_n 的良好实现(STL 中缺少算法)

在 C++11 中,STL 现在有了一个std::iota函数(参见参考资料)。然而,与 , 相比std::fill_nstd::generate_n没有std::iota_n。什么是一个好的实现呢?std::generate_n直接循环(备选方案 1)或使用简单 lambda 表达式(备选方案 2)的委托?

备选方案 1)

备选方案 2)

两种替代方案都会通过优化编译器生成等效代码吗?

更新:结合了@Marc Mutz 的优点,还可以在其目标点返回迭代器。与 C++98 相比,这也是std::generate_nC++11 中的更新方式。

0 投票
1 回答
1754 浏览

haskell - 在 Haskell 中实现 Iota

Iota 是一种非常小的“编程语言”,只使用一个组合器。我有兴趣了解它的工作原理,但是以我熟悉的语言查看实现会很有帮助。

我找到了一个用 Scheme 编写的 Iota 编程语言的实现。不过,我在将其翻译成 Haskell 时遇到了一些麻烦。这很简单,但我对 Haskell 和 Scheme 都比较陌生。

您将如何在 Haskell 中编写等效的 Iota 实现?

0 投票
5 回答
48474 浏览

c++ - 设置 std::vector到一个范围

设置范围的最佳方法是什么std::vector<int>,例如 3 到 16 之间的所有数字?

0 投票
1 回答
240 浏览

static - 静态数组的展开循环

如果我调用函数

使用静态数组,D 会foreach在发布模式下自动为我展开吗?

如果不能

用于实现展开而不是foreach

此外,DMD 是否有一个生成汇编代码的标志,以便我自己将来可以调查 DMD 生成的代码?

更新:到目前为止,这是我的解决方案。

它看起来好吗?

0 投票
2 回答
124 浏览

sql - SQL语句生成一列,其值为记录索引

我有一些 SQL 表,比如单列 c1:

c1
10
3
1
10
5

现在,我想发出一个 SQL 命令(不是我的 DBMS 的某些操作,我故意没有提到),这导致我的表是:

c1 记录索引
10 0
3 1
1 2
10 3
5 4

很简单……这可以吗?显然,你事先并不知道表的长度,所以没有 SQL 插入或类似的技巧。

注意:我想要一个一般性的答案,但要具体一点 - 我正在使用MonetDB

0 投票
2 回答
156 浏览

c++ - 用 iota 初始化一个 unique_ptr 的容器

为了了解 C++11 的复杂性,我玩unique_ptr了一下。

我想知道,有什么方法可以iota用来初始化 Containerunique_ptr吗?

我从运行良好的 unique-ptr-less 解决方案开始:

现在让我们尽可能使用unique_ptr

这显然失败了。原因:

  • 虽然我标记threemovea&&这可能不足以将初始值复制/移动到容器中。
  • ++initValue也不会工作,因为initValue是 type unique_ptr<int>,并且没有operator++定义。但是:我们可以定义一个自由函数unique_ptr<int> operator++(const unique_ptr<int>&);,并且至少可以解决这个问题。
  • 但是再次不允许复制/移动该操作的结果,unique_ptr这一次我看不到如何欺骗编译器使用move.

嗯,这就是我停下来的地方。我想知道我是否错过了一些关于如何告诉编译器他可能moveoperator++. 还是还有其他障碍?

0 投票
2 回答
1709 浏览

go - Iota 在 Go 地图上定义键?

假设我们有一个map[int]string并且我们想像这样定义它:

我想手动维护这些值,因为它们没有模式,但键有。有没有办法像我们使用枚举值一样维护密钥列表1 << 1 + iota

我不是在问是否可以将 iota 用作映射键(不幸的是它不是 AFAIK),只要有一种同样优雅的方法可以在定义的序列上创建键。