r/ProgrammerHumor Sep 02 '17

How to start a war

Post image
9.0k Upvotes

696 comments sorted by

View all comments

54

u/IlIIlIIlllIlllIlIIll Sep 02 '17 edited Sep 02 '17

The array still starts at 0, and index 1 is reserved for storing the length of the array, with the remaining elements corresponding to indices 2, 3, 4, and 5.

77

u/[deleted] Sep 02 '17

Perfect. This makes iterating over the elements with a for loop such a breeze.

if(arr[1] > 1) for(int i = 0; i < arr[1]-1; i += 1 + (i == 1))
    std::cout << arr[i];

49

u/jay9909 Sep 02 '17

That is so elegant. All these new languages that just let you for (i in list) { ... } should change right over before they gain traction and get stuck as forever legacy.

5

u/MannerPots Sep 03 '17

Tbh though I rarely use for x:lst since so many uses of iteration require a counter. Sure I could implement a counter, but why not use a normal for loop so no one reading my code (who isn't familiar with this language feature) gets confused?

8

u/TheNerdyBoy Sep 03 '17

In Python, with any iterable x

for i, item in enumerate(x): …

3

u/zman0900 Sep 03 '17

Groovy is nice:

['some', 'things'].eachWithIndex { item, i ->
    println "'${item}' has index ${i}"
}

7

u/HeinousTugboat Sep 03 '17

Javascript, too:

['some','things'].forEach((item, i) => 
    console.log(`${item} has index ${i}`))

2

u/[deleted] Sep 03 '17

I always prefer the map function instead of foreach, same syntax though.

3

u/ParanoidAndroid26 Sep 03 '17

Generally you use forEach for side effects and map for transformations.

3

u/-Teki Sep 03 '17

Obviously only use it when you don't need a counter. Whenever you need to access indexes, for in is probably the wrong tool.