数组索引与数组元素

Mar*_*377 -1 c c++ arrays indices

这是一个与这个问题相关的元问题:如何编写无分支std :: vector扫描?.

最初提出的问题(强调我的):

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

然后我把它编辑成:

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

然后另一位用户将其编辑为:

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

我将其标记为主持人还原,说明:

我重写了这个问题(stackoverflow.com/posts/38798841/revisions),其主要目标是将"数组索引"替换为"元素",因为这实际上是被问到的 - 并且在此上下文中引用"索引/索引"会导致有些困惑.然而,用户Aconcagua推翻了我编辑的这个关键部分.我相信他的最新编辑应该回滚.

它有理由拒绝:

阿空加瓜的编辑是正确的; 用户正在收集数组指标,而不是数组元素本身

.

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

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

我根本不知道他将如何或为什么收集"指数"而不是"元素".有人可以澄清一下这样我真的能理解吗?

Ste*_*eve 7

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

for (int i = 0; i < data.size(); ++i)
    if (data[i] < 9)
        r.push_back(i);
Run Code Online (Sandbox Code Playgroud)

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

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