vectores programacion matriz matrices llenar imprimir funciones ejemplos con como caracteres cadenas arreglo c++ arrays vector declaration

programacion - Cómo inicializar un vector en C++



vectores en c (2)

Con el nuevo estándar de C ++ (puede necesitar que se habiliten indicadores especiales en su compilador) simplemente puede:

std::vector<int> v { 34,23 }; // or // std::vector<int> v = { 34,23 };

O incluso:

std::vector<int> v(2); v = { 34,23 };

En los compiladores que no son compatibles con esta característica (listas de inicializador) aún puede emular esto con una matriz:

int vv[2] = { 12,43 }; std::vector<int> v(&vv[0], &vv[0]+2);

O, en el caso de la asignación a un vector existente:

int vv[2] = { 12,43 }; v.assign(&vv[0], &vv[0]+2);

Como sugirió James Kanze, es más robusto tener funciones que te den el comienzo y el final de una matriz:

template <typename T, size_t N> T* begin(T(&arr)[N]) { return &arr[0]; } template <typename T, size_t N> T* end(T(&arr)[N]) { return &arr[0]+N; }

Y luego puedes hacer esto sin tener que repetir el tamaño en todas partes:

int vv[] = { 12,43 }; std::vector<int> v(begin(vv), end(vv));

Posible duplicado:
C ++: la forma más fácil de inicializar un vector STL con elementos codificados

Quiero inicializar un vector como lo hacemos en el caso de una matriz.

Ejemplo

int vv[2] = {12, 43};

Pero cuando lo hago así,

vector<int> v(2) = {34, 23};

O

vector<int> v(2); v = {0, 9};

da un error:

expresión primaria esperada antes de ''{'' token

Y

error: expected '','' or '';'' antes del token ''=''

respectivamente.


También puedes hacer esto:

template <typename T> class make_vector { public: typedef make_vector<T> my_type; my_type& operator<< (const T& val) { data_.push_back(val); return *this; } operator std::vector<T>() const { return data_; } private: std::vector<T> data_; };

Y úsalo así:

std::vector<int> v = make_vector<int>() << 1 << 2 << 3;