数组索引与数组元素

时间:2016-09-01 00:09:35

标签: c++ c arrays indices

这是与此问题相关的一个元问题: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 个答案:

答案 0 :(得分:7)

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

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

请注意,i正在添加到向量中,不是 data[i]

i是有趣元素的索引,是存储的内容,而不是data[i]中存储的值,data向量中的元素。