Det du tänker på är nog detta i C++11
vector<int> arrayOfInts{1,2,4,7,11};
// iterate through all integers
for (auto anInt: arrayOfInts) {
cout << anInt << endl;
}
C++11 har även lambda-uttryck, som även kan vara closures. C har inget i språket som liknar detta, men går att uppnå samma logiska effekt
vector<int> ints{1,2,4,7,11};
// in-place transform of members of 'ints' using a lambda that capture a local variable
int intShift = 3;
transform(begin(ints), end(ints), begin(ints), [=](int anInt){ return anInt << intShift; });
De senaste åren har C och Java varit överlägset största språk enligt Tiobe index. Det är inte förvånande då världen är idag byggd på dessa två språk.
C är grunden för alla stora operativsystem som används idag. C är också överlägset vanligaste språk för inbyggda system, var en C++ trend i slutet av 90-talet men den kom helt av sig. Antalet programmerare som jobbar med någon form av inbyggt system är helt enormt, just i Sverige är det inte fullt lika vanligt som det är i världen i stort.
Java är för molnet vad C är för operativsystem. I princip alla stora ramverk här kör ovanpå en JVM, finns andra språk men de är alla nischspelare sett till totalt marknadsandel.
C++ klarar sig nog också då de flesta program vi kör på skrivbordet är i grunden C++ applikationer. Om C/Java någonsin försvinner kommer det med stor sannolikhet hända långt efter språk som C++ upphört att existera.
Edit: glömde kommentera "thread". Detta var bl.a vad jag menade med att C och C++ närmare sig lite på biblioteksnivå, C++11 fick en lång rad nya funktioner kring att programmera system med flera CPU-kärnor och de funktioner som är vettiga även för C dyker upp där med samma semantik.
Just trådning är trevligt, men inte jätteupphetsande. Det riktigt intressanta i C11 och C++11 i.m.h.o är atomic. Detta är inte bara "atomära operationer" som man hittar i t.ex. Java/C#, här har man tagit det flera steg längre och låter programmeraren exakt beskriva vilken typ av synkronisering man vill ha.
Modellen Java/C# är enklare och den passar x86 rätt bra, men kör man på ARM, PowerPC m.fl. blir det i många fall långt mer ineffektivt än nödvändigt. C/C++ 11 gör det möjligt att beskriva kravet man har på sin atomära semantik, kompilatorn kan då anpassa sig till mer effektiva sätt beroende på CPU-arkitektur. D.v.s.. som programmerare slipper man känna till exakta detaljer om CPU-arkitektur men kan ändå skriva extremt effektiva program bara man har generell förståelse för minneskonsistensmodeller.