W tym samouczku dowiemy się o pętlach for w języku C ++ i najlepszych praktykach za pomocą przykładów.
C ++ 11 wprowadził for
pętlę dystansową . Ta for
pę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 for
pętla zasięgowa iteruje tablicę num od początku do końca. int
Zmienna 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

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 int
tablicę o nazwie numArray. Tutaj użyliśmy for
pętli dystansowej do wydrukowania elementów numArray.
- pierwsza iteracja - n przyjmuje wartość pierwszego elementu tablicy, czyli
1
- druga iteracja - n przyjmuje wartość,
2
a 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 for
pę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 for
pę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 ++.

Uwaga: Jeśli nie modyfikujemy tablicy / wektora / kolekcji w pętli, lepiej jest użyć const
słowa kluczowego w deklaracji zakresu.
// collection is not modified in the loop for (const int &var : num) ( // code )