Valor no válido para size_t

¿Qué usa la gente para denotar que size_t no es válido? -1 no funciona, y 0 puede ser un tamaño válido.

Quizás ((size_t)-1) ?

Estrictamente hablando, es un tamaño válido, pero una vez que tenga este, no es probable que necesite otro 😉

Si estás hablando de std :: string, el valor inválido de size_t es std :: string :: npos. Normalmente, no debe usar -1 porque un size_t no está firmado, y puede obtener comparaciones fallidas en un comstackdor que realiza conversiones implícitas entre tipos.

Dicho esto, std :: strings’s npos se establece en 0XFFFFFFFFFFFFFFFF … que es el equivalente binario de -1. También evalúa el valor máximo permitido para un campo size_t sin firmar.

Básicamente no se puede. Cualquier valor que uses puede ser válido. Mejor pasar una bandera diciendo que no es válido.

¿Y qué haces para denotar que un int no es válido? -1 es un valor válido para un int. Estos tipos no tienen valores “inválidos” designados. Puede decidir elegir un cierto valor (que normalmente nunca puede ser el valor de lo que representa su variable) para representar un valor ilegal, pero esa es su propia definición, y no algo que las personas generalmente usan.

Personalmente, no me gusta así. Prefiero crear otra variable, bool IsValid , que dirá si el valor de esa variable size_t es válido. A veces, incluso puede ser mejor crear una clase para encapsularlos.

Mi versión es:

 #include  #define invalid_index std::numeric_limits::max()