cvičení
zápočtové testy
zápočtové programy
můžeme používat překladače ve Visual Studiu
ve VS Code
dá se nainstalovat microsoftí překladač nebo gcc nebo clang ve verzi pro windows
na Windows bychom měli programy psát tak, aby fungovaly i na Linuxu
na grafické rozhraní knihovna Qt
budou po nás chtít překlad bez warningů
je dobré z programů vracet nulu
argv
vector
std::vector<std::string> arg(argv, argv + argc);
argv
a argv+argc
jsou iterátorystd::string
má konverzní konstruktor, z typu char*
vznikne std::string
std::vector<std::string>
je kontejner stringůstringy
int main(int argc, char** argv) {
std::vector<std::string> arg(argv, argv + argc);
for (int i = 0; i < argc; ++i) {
// tohle nebude fungovat, protože arg[i] neopovídá typu %s
std::printf("%d: %s\n", i, arg[i]);
}
return 0;
}
aliasy typů pomocí using
, používá se předpona t_
using t_arg = std::vector<std::string>;
for (auto&& x : parg)
třída std::ifstream
… vstupní souborový stream
ctd::cout
je typu std::ofstream
fstream
umí vstup i výstupu, ale ovládá se komplikovanějistrstream
, který pracuje s proměnnou typu stringdebug režim
starší vrstva standardních knihoven nevypouštějí výjimky
ifstream
nepovede otevřít, nastaví se chybový příznakfail()
vrací true, pokud se poslední volání rozbilogood()
vrací true, pokud je objekt v pořádkupříznak eof
se nastaví až po tom, co se pokusíme přečíst data za koncem souboru
takže po každém čtení kontrolujeme fail, pokud to zfailovalo a nastavil se příznak eof, je to v pohodě – jsme na konci souboru
zajímavé věci, které můžeme použít
std::runtime_error
, nepoužívá se new
std::sort
k tříděnístd::pair
se umí řadit lexikografickysize_t
int
budeme používat málokdy – většinou řešíme nějaké pozice, indexování do polestd::emplace_back
na přidání dvojice na konec kontejneru dvojicstd::iota