Diskuze: Pole objektů - porovnání
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Chceš najít v poli objekt s danou vlastností, postačí testovat objekty v poli na danou vlastnost. Není k tomu třeba zbytečně zakládat celý nový objekt.
Pokud objekt s danou vlastností v poli existuje, bude mít adresu, pokud nikoli, bude adresa ukazatele NULL. Je třeba si vytvořit ukazatel na objekt a před procházením pole ho nastavit na NULL. Tím se zajistí, že adresa na objekt bude neplatná v případě, že žádný objekt v poli s požadovanou velikostí nenajdeme.
Zde pak je úryvek kódu pro vyhledání objektu s vlastností velikost:
psMIC = NULL;
for (int i = 0; i < SIZE; i++) {
if (pole_micu[i].velikost == HLEDANA_VELIKOST) {
psMIC = pole_micu + i;
break;
}
}
return psMIC;
SIZE - velikost pole_micu
HLEDANA_VELIKOST - hodnota vlastnosti velikost která se hledá
psMIC - ukazatel na objekt který je stejného typu jako pole_micu.
Mohlo by to jit zapsat i nejak takhle: (a tem hvezdickam bych se snazil vyhybat, pokud se jedna o int nebo char)
int mylist[] = { 10, 20, 30, 40 };
Mic* Hra_s_Micem :: micSelectByVelikost(int velikost)
{
for (auto myitem : mylist)
{
if (myitem.velikost == velikost)
{
return myitem;
}
}
return null;
}
####
# C++11 allows you to do:
for (const auto& kv : myMap) {
std::cout << kv.first << " has value " << kv.second << std::endl;
}
# C++17 allows you to do:
for (const auto& [key, value] : myMap) {
std::cout << key << " has value " << value << std::endl;
}
Zobrazeno 3 zpráv z 3.