empurrando elementos do mesmo vetor: segurança medidas
a segurança de recuar um elemento do mesmo vetor depende do potencial para realocação , que pode invalidar referências aos elementos vetoriais existentes. Este problema surge no exemplo a seguir:
vector v;
v.push_back(1);
v.push_back(v[0]);
se o segundo push_back acionar a realocação, a referência a v [0] se torna inválida. Para abordar isso, a seguinte abordagem pode ser usada:
vector v;
v.push_back(1);
v.reserve(v.size() 1);
v.push_back(v[0]);
ligando para a reserva, solicitamos explicitamente memória suficiente, garantindo que nenhuma realocação ocorra durante as inserções subsequentes.
de acordo com o padrão C, o comportamento do comportamento do push_back em relação às referências de elemento não é explicitamente definido como um defeito, mesmo que isso possa levar a referências inválidas. Isso ocorre porque o padrão requer vetor :: insert para funcionar corretamente, mesmo quando a inserção altera as posições de outros elementos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3