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?