C ++ с диапазон за цикъл (с примери)

В този урок ще научим за C ++ диапазона за цикли и неговите най-добри практики с помощта на примери.

C ++ 11 въведе forцикъла с обхват . Този forцикъл се използва специално за колекции като масиви и вектори .

Например,

 // initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )

Тук forцикълът с диапазон повтаря номера на масива от началото на до края. В intпроменлива реактивна съхранява стойността на елемента на масива във всяка итерация.

Синтаксисът му е,

 for (rangeDeclaration : rangeExpression) ( // code )

В горния пример,

  • rangeDeclaration -int var
  • rangeExpression - num
Работа на цикъла за диапазон за C ++

Пример 1: Обхват за цикъл, използващ масив

 #include using namespace std; int main() ( // initialize array int numArray() = (1, 2, 3, 4, 5); // use of ranged for loop to print array elements for (int n : numArray) ( cout << n << " "; ) return 0; )

Изход

 1 2 3 4 5

В този пример декларирахме и инициализирахме intмасив с име numArray. Тук използвахме forцикъла с диапазон, за да разпечатаме елементите на numArray.

  • първа итерация - n приема стойността на първия член на масива, който е1
  • втора итерация - n приема стойността на 2и след това се отпечатва и т.н.

Забележка: Цикълът за диапазон for автоматично повтаря масива от началото до края му. Не е необходимо да посочваме броя итерации в цикъла.

Пример 2: C ++ обхват за цикъл, използващ вектор

 #include #include using namespace std; int main() ( // declare and initialize vector vector num_vector = (1, 2, 3, 4, 5); // print vector elements for (int n : num_vector) ( cout << n << " "; ) return 0; )

Изход

 1 2 3 4 5

Пример 3: Деклариране на колекция вътре в цикъла

 #include using namespace std; int main() ( // define the collection in the loop itself for (int n : (1, 2, 3, 4, 5)) ( cout << n << " "; ) return 0; )

Изход

 1 2 3 4 5

Тук сме декларирали колекцията в самия цикъл, т.е.

 rangeExpression = (1, 2, 3, 4, 5)

Това също е валиден начин за използване на forцикъла с диапазон и работи по същия начин, както когато използваме действителен масив или вектор.

C ++ за най-добри практики в Loop

В горните примери декларирахме променлива в forцикъла, за да съхраняваме всеки елемент от колекцията във всяка итерация.

 int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )

По-добре е обаче да напишете диапазона, базиран на цикъл, по следния начин:

 // access memory location of elements of num for (int &var : num) ( // code )

Забележете използването на &преди var. Тук,

  • int var : num- Копира всеки елемент от num към променливата var във всяка итерация. Това не е добре за компютърната памет.
  • int &var : num- Не копира всеки елемент от num във var. Вместо това достъпва елементите на num директно от самия num. Това е по-ефективно.

Забележка: В &оператора е известен като препратка оператора. Ще научим повече за това в указателите на C ++.

Работа с адрес, сочещ в C ++, варира за цикъл

Забележка: Ако не променяме масива / вектора / колекцията в рамките на цикъла, по-добре е да използваме constключовата дума в декларацията за диапазон.

 // collection is not modified in the loop for (const int &var : num) ( // code )

Интересни статии...