2016-09-01 225 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

該死!確實如此。我現在意識到,我有一個完全混淆的部分。感謝您花時間回答這個「有點愚蠢」的問題。 –