2017-03-23 102 views
1

我想創建一個數組的循環引用。例如,如何創建圓形陣列?

float arr1[10] = {0,1,2,3,4,5,6,7,8,9};

然後,我使用一個變量在循環訪問數組的元素。

for (int i=0;i<10;i++){ 
    std::cout<<arr1[i]<<std::endl; 
    //other processing using arr1[i] indexing 
} 

在這裏,我只能使用i<=10。如果我想製作i<=16,並且如果i>10那麼索引應該去arr1[0]並從那裏繼續。什麼是更好的或推薦的方法來做到這一點?

+6

Modulo運算符 – Fureeish

+1

隨着條件'i <= 10',您將訪問十元素數組的第十一個元素。 –

+0

我會提供一個迭代器,以增加'++(end-1)== begin' – user463035818

回答

5

您需要使用模運算符%14 % 10 = 4所以,只需使用索引來訪問它即可。

-2

可以是U [R尋找...

for (int i=0;i<10;i++){ 
    std::cout<<arr1[i%10]<<std::endl; 
    //other processing using arr1[i] indexing 
} 
+5

請用完整的單詞和句子;你現在不在Instagram。 –

0

你應該像@使用Jdman1699表示模運算。這裏你可以找到一個例子:

int position; //the position you want to get 
float out = arr1[position%10]; 
0

爲了您具體計劃,我只想建議把你的for循環基地的另一個在for循環(因爲它似乎要打印出數組很多的所有元素時間結束,考慮你的源代碼)。這是因爲訪問元件n與訪問元件n + 10沒有區別。但是,如果你打算建立某種形式的函數訪問陣列中的任何元素,我想也許使用模運算符基10,

unsigned long int newidx = iptidx%10; 

,然後用newidx工作。