2016-09-01 229 views
-1

这是一个与此问题相关的元问题:How do I write a branchless std::vector scan?数组索引与数组元素

问题最初规定(重点煤矿):

我有一个std::vector<int> data;我想查找所有小于9的数组 索引并将它们添加到结果向量中。

然后我把它编辑成:

我有一个std::vector<int> data,我想找到所有元素是 小于9并将它们添加到一个结果向量。

然后其他用户就编辑为:

我有一个std::vector<int> data,我想找到所有数组的下标 这小于9并将它们添加到结果矢量元素。

我标记它主持人恢复这一点,他表示:

我改写了这个问题(stackoverflow.com/posts/38798841/revisions) 与“元素”取代“数组索引”的主要目标,因为 那实际上是被问到的 - 在这种情况下提及 “索引/索引”会引起一些混淆。然而,用户 阿空加瓜已经推翻了我编辑的这个关键部分。我相信 他的最新编辑应该回滚。

,并与理由拒绝:

阿空加瓜的编辑是正确的;用户正在收集阵列标记, 不是阵列元件本身

现在,我不太明白主持人说什么 - “用户正在收集数组索引”。我看到它的方式,索引是数组中元素的位置。例如,在C语言:

char array[] = {'t', 'e', 's', 't'}; 
int index = 1; 
char element = array[index]; 
printf('%c', element); 

我根本看不出来怎么样,为什么,他将收集的,而不是“元素”,“指数”。有人能澄清这一点,所以我可以真正理解它吗?

+1

不应该编辑问题,您应该留下评论,要求OP澄清问题。只有OP知道他/她正在试图找到什么。所以你和别人都不应该编辑这个问题。如果需要修复,请让OP修复它。 – user3386109

+0

@ user3386109你确实有一点,但编辑他人的帖子以澄清是一个有效的措施。特别是当我们的请求被OP忽略时。我们都看过这个。正如另一名主持人曾经告诉我的:*“(主动)OP可以恢复它,如果他想要”*。 –

回答

7

在在链接的问题的顶部的示例代码:

for (int i = 0; i < data.size(); ++i) 
    if (data[i] < 9) 
     r.push_back(i); 

注意i被添加到所述载体,data[i]

i是感兴趣的元素的索引,并且是存储的内容,而不是存储在向量中的元素data[i]处的值。

+0

该死!确实如此。我现在意识到,我有一个完全混淆的部分。感谢您花时间回答这个“有点愚蠢”的问题。 –