tamaño length arreglo array c++ vector size const unsigned-integer

c++ - length - ¿Cómo puedo obtener el tamaño de un std:: vector como un int?



array.length c++ (1)

En los dos primeros casos, simplemente olvidó llamar a la función miembro (!, No es un valor) std::vector<int>::size como este:

#include <vector> int main () { std::vector<int> v; auto size = v.size(); }

Tu tercera llamada

int size = v.size();

activa una advertencia, ya que no todos los valores de retorno de esa función (por lo general, un int sin signo de 64 bits) se pueden representar como un int con signo de 32 bits.

int size = static_cast<int>(v.size());

siempre compilaría limpiamente y también explícitamente declara que su conversión de std::vector::size_type fue pensada.

Tenga en cuenta que si el tamaño del vector es mayor que el número más grande que puede representar un int , el size contendrá un valor definido de implementación (basura de facto).

Lo intenté:

#include <vector> int main () { std::vector<int> v; int size = v.size; }

pero consiguió el error:

cannot convert ''std::vector<int>::size'' from type ''std::vector<int>::size_type (std::vector<int>::)() const noexcept'' {aka ''long unsigned int (std::vector<int>::)() const noexcept''} to type ''int''

Lanzando la expresión a int así:

#include <vector> int main () { std::vector<int> v; int size = (int)v.size; }

también produce un error:

error: invalid use of member function ''std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::size() const [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::size_type = long unsigned int]'' (did you forget the ''()'' ?)

La última vez que lo intenté:

#include <vector> int main () { std::vector<int> v; int size = v.size(); }

que me dio

warning: implicit conversion loses integer precision

¿Cómo puedo arreglar esto?