Articles

Array index mimo hranice-C++ Forum

vektory mají spoustu dobrých věcí pro ně.
Ale c++ pole, pokud používáte standardní vynucená kompilace, MUSÍ mít známé velikosti v době kompilace (nemůže být proměnná, pouze v době kompilace známé hodnoty jako enum, const int, doslovný počet, atd.) Měli byste vždy znát velikost pole a nikdy dojdou hranice na to kvůli tomu. Takže i když byste měli upřednostňovat vektory obecně, někdy zdědíte kód, který má pole, nebo se budete muset vypořádat se souborem C ve vaší kompilaci nebo podobně, takže potřebujete znát základy. Velikost je obvykle enum nebo const někde s názvem, který můžete použít při opakování, aby byl v bezpečí. Používáte-li pole z jakéhokoli důvodu, použijte tuto myšlenku a vyhnete se většině problémů mimo hranice. V dalších otázkách se může stát na vektory taky-ty, kde si vypočítán index a zvoral to, ale vektory dát vám nástroje, aby tuto kontrolu, zatímco pole mají méně možností pro manipulaci chyby.
c++ je vysoce výkonný jazyk. Nedělá zbytečnou práci v zákulisí obecně, musíte to udělat, pokud to chcete. Takže pokud chcete kontrolovat hranice, potřebujete k tomu kód. můžete jít mimo hranice na vektoru příliš, mimochodem.
vector <int> duh = {1,2,3};
cout << duh; //mimo hrací plochu. s největší pravděpodobností crash.
není to tak, že vektor kontroluje hranice nebo je „bezpečnější“, když se pokazíte. Je to tak, že má svou vlastní proměnnou spravované velikosti, takže by mělo být těžší, pokud píšete kód pečlivě.