C ++ Ranged for Loop (z przykładami)

W tym samouczku dowiemy się o pętlach for w języku C ++ i najlepszych praktykach za pomocą przykładów.

C ++ 11 wprowadził forpętlę dystansową . Ta forpętla jest szczególnie używana z kolekcjami, takimi jak tablice i wektory .

Na przykład,

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

Tutaj forpętla zasięgowa iteruje tablicę num od początku do końca. intZmienna var przechowuje wartość elementu tablicy w każdej iteracji.

Jego składnia to:

 for (rangeDeclaration : rangeExpression) ( // code )

W powyższym przykładzie

  • rangeDeclaration -int var
  • rangeExpression - num
Działanie pętli ranged for w C ++

Przykład 1: Ranged for Loop using Array

 #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; )

Wynik

 1 2 3 4 5

W tym przykładzie zadeklarowaliśmy i zainicjowaliśmy inttablicę o nazwie numArray. Tutaj użyliśmy forpętli dystansowej do wydrukowania elementów numArray.

  • pierwsza iteracja - n przyjmuje wartość pierwszego elementu tablicy, czyli1
  • druga iteracja - n przyjmuje wartość, 2a następnie jest wypisywane i tak dalej.

Uwaga: Pętla ranged for automatycznie iteruje tablicę od jej początku do końca. Nie musimy określać liczby iteracji w pętli.

Przykład 2: C ++ Ranged for Loop using Vector

 #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; )

Wynik

 1 2 3 4 5

Przykład 3: Zadeklaruj kolekcję wewnątrz pętli

 #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; )

Wynik

 1 2 3 4 5

Tutaj zadeklarowaliśmy kolekcję w samej pętli, tj

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

Jest to również poprawny sposób używania forpętli dystansowej i działa w taki sam sposób, jak w przypadku rzeczywistej tablicy lub wektora.

C ++ Ranged for Loop Best Practices

W powyższych przykładach zadeklarowaliśmy zmienną w forpętli do przechowywania każdego elementu kolekcji w każdej iteracji.

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

Jednak lepiej jest napisać pętlę for na podstawie zasięgu w następujący sposób:

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

Zwróć uwagę na użycie &przed var. Tutaj,

  • int var : num- Kopiuje każdy element num do zmiennej var w każdej iteracji. To nie jest dobre dla pamięci komputera.
  • int &var : num- Nie kopiuje każdego elementu num do var. Zamiast tego uzyskuje dostęp do elementów num bezpośrednio z samego num. To jest bardziej wydajne.

Uwaga:& operator jest znany jako operator odniesienia. Dowiemy się więcej na ten temat ze wskaźników C ++.

Praca adresu wskazującego w C ++ obejmowała pętlę for

Uwaga: Jeśli nie modyfikujemy tablicy / wektora / kolekcji w pętli, lepiej jest użyć constsłowa kluczowego w deklaracji zakresu.

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

Interesujące artykuły...