数组索引与数组元素

Array Indices vs Array Elements

本文关键字:数组元素 索引 数组      更新时间:2023-10-16

这是一个与这个问题相关的元问题:我如何编写无分支std::vector scan?。

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

我有一个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);

我根本不明白他如何或为什么会收集"索引"而不是"元素"。有人可以澄清这一点,以便我真正理解它吗?

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

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

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

i 是相关元素的索引,并且是正在存储的内容,而不是存储在 data[i] 的值,这是 data 向量中的元素。