"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que `std :: Vector :: Reference` retorna um` bool & `?

Por que `std :: Vector :: Reference` retorna um` bool & `?

Postado em 2025-03-11
Navegar:719

Why Doesn't `std::vector::reference` Return a `bool&`?

Por que o vetor :: Referência não retorna a referência a bool?

em c, o std :: vector contêiner é especializado para valores booleanos. Essa especialização introduz diferenças no comportamento em comparação com os vetores de outros tipos de dados. Ao tentar passar uma referência a um elemento de um std :: Vector para Calliftogled, ocorre um erro de compilação. Isso ocorre porque o tipo de referência retornado pelo vetor :: Referência não é o bool esperado &. Isso é feito para otimizar o desempenho usando uma representação bitwise para valores booleanos. Biblioteca:

A biblioteca de contêineres Boost fornece uma versão não especializada do vetor que oferece uma verdadeira referência aos valores bool. Isso permite passar uma referência ao invólucro, que por sua vez fornece acesso indireto ao valor BOOL subjacente. estrutura a { void foo () {} }; Modelo Void Calliftoggled (CHAR V1, CHAR & V2, T&T) { if (v1! = v2) { v2 = v1; t.foo (); } } int main () { std :: vetor v = {false, true, false}; const char f = false; A a; Calliftoggled (f, v [0], a); Calliftoggled (f, v [1], a); Calliftoggled (f, v [2], a); }

Tutorial mais recente Mais>

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