Articles

Array index out of bounds-C++ Forum

vectors have a lot of good stuff going for them.
But c++ arrays, if using a standard enforced compile, MUST have a known size at compile time (cannot be a variable, only a compile time known value like enum, const int, literal number, etc.) Você deve sempre saber o tamanho do seu array e nunca correr para fora dos limites nele por causa disso. Então, enquanto você deve favorecer vetores em geral, você às vezes herda código que tem arrays, ou tem que lidar com um arquivo C em sua compilação, ou assim, então você precisa saber o básico. Tipicamente o tamanho é um enum ou const algures com um nome que se pode usar quando se faz looping para o manter seguro. Se você usar arrays por qualquer razão, use esta idéia e você vai evitar a maioria dos problemas fora dos limites. Os outros problemas também podem acontecer em vetores — aqueles em que você computou o índice e fez asneira, mas os vetores lhe dão as ferramentas para verificar isso, enquanto as matrizes têm menos opções para lidar com bugs. c++ é uma linguagem de alto desempenho. Não faz trabalho desnecessário nos bastidores em geral, você tem que fazê-lo fazer isso se você quiser. Então, se você quiser verificar limites, você precisa de código para fazer isso. a propósito, também podes sair dos limites num vector.
vector <int> duh = {1,2,3};
cout << duh; //fora dos limites. acidente, provavelmente.
não é que o vetor esteja verificando os limites ou’ mais seguro ‘ quando você erra. É que ele tem a sua própria variável de tamanho gerenciado assim que bagunça deve ser mais difícil, se você está escrevendo o seu código com cuidado.