Přejít na hlavní obsah

Příklady použití range based for V si

Range based for - je to nová možnost představená v programovacím jazyce C11, která Vám umožňuje pohodlně procházet kontejnery. Tento design umožňuje programátorům psát čitelnější a elegantnější kód.

Jedním z hlavních plusů range based for je, že automaticky detekuje typ prvků kontejneru a iteruje je. Již nemusíme explicitně specifikovat iterátory a přistupovat k prvkům pomocí ukazatelů nebo indexů. Range based for Samostatně určí typ prvku a umožní nám s ním pracovat jako s běžnou proměnnou.

Zvažte příklad použití range based for. Představme si, že máme pole čísel a chceme každé číslo přenést na obrazovku:

#include <iostream>int main() ;for (int number : numbers) return 0;>

Range based for lze použít nejen s poli, ale i s jinými kontejnery, jako jsou vektory nebo seznamy. Můžeme také přidat klíčové slovo const Chcete-li určit, že nebudeme měnit prvky kontejneru:

#include <iostream>#include <vector>int main() ;for (const int& number : numbers) return 0;>

V tomto příkladu používáme vektor čísel místo pole, ale syntaxe range based for zůstává stejná. Všimněte si, že používáme odkaz & pro každé číslo a přidejte Klíčové slovo const Chcete-li určit, že prvky vektoru nelze změnit uvnitř cyklu.

Range based for Je velmi pohodlná konstrukce v jazyce Si11 a lze ji použít k iteraci napříč různými kontejnery. Díky tomu je Kód srozumitelnější a eliminuje potřebu explicitně specifikovat typy iterátorů.

Definice range based for a její výhody

Jednou z hlavních funkcí range based for je jeho snadné použití. K tomu se používá klíčové slovo auto, které automaticky detekuje typ proměnné , a také klíčové slovo for, které označuje začátek cyklu.

Mezi výhody range based for oproti tradičnímu cyklu for patří jednoduchost a srozumitelnost kódu. Tento cyklus se vyhýbá chybám spojeným s indexy nebo iterátory, protože automaticky detekuje velikost kontejneru a přeruší všechny jeho prvky.

Range based for navíc usnadňuje čtení kódu a činí jej stručnějším. Díky tomu, že není nutné explicitně specifikovat typy proměnných, je Kód srozumitelnější a snadno čitelný.

V důsledku použití range based For se kód stává "modulárnějším" a použitelnějším. Tento cyklus zjednodušuje proces iterování kontejnerem a uvolňuje programátora, aby se staral o detaily implementace cyklu.

Příklad použití range based for pro přerušení prvků pole

Chcete-li použít cyklus range based for, musíte zadat typ prvků pole, Název proměnné pro každý prvek a samotné pole v závorkách za klíčovým slovem for. Například:

int arr[] = ;for (int element : arr) 

V tomto příkladu bude na obrazovce zobrazena každá hodnota prvku arr pole.

Podobně lze použít cyklus range based for k přerušení prvků jiných typů polí, jako je char[], double[] atd.

Je však třeba poznamenat, že cyklus range based for neumožňuje měnit hodnoty prvků pole, pouze je číst. Pokud potřebujete změnit hodnoty prvků pole, měli byste použít normální cyklus for.

Použití range based for pro obcházení kontejneru s různými typy prvků

Pro použití range based for Je nutné mít kontejner, který podporuje iteraci. Příklady takových kontejnerů v Si mohou být pole, standardní kontejnery z knihovny STL, jako je vector nebo list, a vlastní kontejnery.

Příklad použití range based for pro obcházení kontejneru s různými typy prvků: