什么是std :: iota代表什么?

时间:2012-02-11 23:12:25

标签: c++ naming-conventions c++11

我假设“i”是增量而“a”是指定的,但我无法弄清楚或找到答案。此外,它看起来非常类似于我认为令人困惑的非标准itoa

6 个答案:

答案 0 :(得分:160)

来自the original SGI STL documentation

  

名称iota取自编程语言APL。

In his Turing Award lecture, Ken Iverson (inventor of APL) said this:

  

例如,ι表示的整数函数在应用于参数n时生成第一个n整数的向量,...

ιthe lower-case Greek letter iota

在上面的引文中,我输入了ιU+03B9, “GREEK SMALL LETTER IOTA”,但Unicode实际上有一个APL的专用代码点:U+2373, “APL FUNCTIONAL SYMBOL IOTA”


为回应评论者的要求,我将在此背景下进一步阐述“iota”的词源。

最有可能的答案是Ken Iverson想要一个符号,它会提醒用户“整数”这个词,并使用字母“i”作为典型的整数变量,特别是对于数组下标。

但我们假设有更深层的含义。

根据牛津英语词典,“iota”是“希腊字母Ι,ι的名字,对应于罗马I,i;希腊字母表中最小的字母“(物理上最小,不是按字母顺序排列,我推测),也指”最小或非常小的粒子或数量“。 OED最早使用的意思是来自Daniel Featley于1636年的 Clavis mystica

  

我们是否会失去或轻易地通过上帝的Booke的任何一点点?

Clavis mystica 是部分圣经的指南,这句话特别指的是马太福音5:18。 The 1611 edition of the King James Version has this text for Matthew 5:18

matthew 5:18

转录:

  

我实在告诉你,直到heauen和地球过去,一个人或一个头衔,不应该从法律上消失,直到所有人都满足为止。

OED将“iote”作为另一种形式的“jot”,其中(如“iota”)来自希腊语“ἰῶτα”,这是该字母的希腊名字。为什么Featley将“iote”改为“iota”?可悲的是,我的个人图书馆里没有 Clavis mystica 的副本,所以我无法进一步调查。

在马太福音5:18的原始希腊文中,“iote”是“ἰῶτα”,而“title”(或更现代,“tittle”)是“κεραία”。 “κεραία”一词大致是指“serif”或“撇号”。因此,本圣经经文指的是最小细节的概念,并使用“ἰῶτα”来表示字母iota作为希腊字母表中物理上最小的字母。

因此,我们可以推断出STL函数iota及其APL前因,在希腊字母“ι”的物理上最小的字母后,通过圣经命名,因为这些函数产生的整数由整数可以分开的最小量分隔。

According to Wikipedia,希腊字母iota来自腓尼基字母yōdh。

这就像我目前希望针对这个问题进行编程一样远。

答案 1 :(得分:29)

它的希腊字母有时会用于数学中来表示数字或单位向量。在C ++案例中,您将获得构造的向量集。与itoa没什么关系。

答案 2 :(得分:22)

std::iota将使用连续递增的值填充迭代器范围。

要回答您的具体问题,它实际上并不代表任何事情。 Iota (英语中发音为“eye-oh-duh”)是一个带有数学内涵的希腊字母。

它是C ++ 11中的标准,但在早期标准中没有。

答案 3 :(得分:3)

哦,我始终认为自std::iota(start,end,0)基本上代表

for(size_t i = 0; i < std::distance(start, end) ; i++) { start[i] = i; }

然后你基本上&#34;指定我&#34;对于每个数组元素,iota是i的希腊语,所以那里。

(如果这是APL选择的理由,我会不会感到惊讶,在@ robmayoff&#39; s answer中提到,虽然我不知道是否是这种情况。 )

答案 4 :(得分:1)

我从此页面引用:iotashaming,在这里您可以找到有关此主题的更多信息。

  

STL受Ken Iverson在APL方面的工作影响很大。在1979年的肯·图灵奖演讲中,您会发现以下短语:

     

“例如,由ι表示的整数函数会产生前N个整数的向量。”

答案 5 :(得分:0)

datatable( iris, extensions = 'Buttons', options = list( dom = 'Blfrtip', buttons = c('copy', 'csv', 'excel', 'pdf', 'print') ) ) - 它是 C++11 提供的 std::iota 标头中的标准函数模板(不在 <numeric> 中)。

它对于在 [first, last) 范围内生成一系列连续的递增值 (++val) 很有用。

<algorithm>