Maneira correta de trabalhar com vetores de matrizes

Alguém poderia dizer qual é a maneira correta de trabalhar com um vetor de matrizes?

Eu declarei um vetor de arrays ( vector ) mas recebi um error: conversion from 'int' to non-scalar type 'float [4]' requested ao tentar resize lo. O que está errado?

Você não pode armazenar matrizes em um vector ou qualquer outro contêiner. O tipo dos elementos a serem armazenados em um contêiner (chamado de tipo de valor do contêiner) deve ser tanto construtível quanto passível de cópia. Matrizes não são nem.

Você pode, no entanto, usar um modelo de class de matriz, como aquele fornecido pelo Boost, TR1 e C ++ 0x:

 std::vector > 

(Você vai querer replace o std::array pelo std::tr1::array para usar o template incluído no C ++ TR1, ou o boost::array para usar o template das bibliotecas do Boost . Alternativamente, você pode escrever o seu próprio; é bem simples.)

Usar:

 vector> vecArray; //both dimensions are open! 

Não há erro no seguinte trecho de código:

 float arr[4]; arr[0] = 6.28; arr[1] = 2.50; arr[2] = 9.73; arr[3] = 4.364; std::vector vec = std::vector(); vec.push_back(arr); float* ptr = vec.front(); for (int i = 0; i < 3; i++) printf("%g\n", ptr[i]); 

SAÍDA É:

6,28

2,5

9,73

4,364

EM CONCLUSÃO:

 std::vector 

é outra possibilidade além de

 std::vector> 

que James McNellis sugeriu.

Cada elemento do seu vetor é um float[4] , então, quando você redimensiona, todo elemento precisa ser inicializado a partir de um float[4] . Eu entendo que você tentou inicializar com um valor int como 0 ?

Experimentar:

 static float zeros[4] = {0.0, 0.0, 0.0, 0.0}; myvector.resize(newsize, zeros);