<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Buenas noches.<br><br>Estoy intentando hacer una estructura de datos para guardar valores tipo int, que pueden ser 0, 1 o 2. Para ello, quiero usar un vector compuesto de vectores.<br><br>Para ello he creado un tipo concreto:<br><br>typedef vector< vector<int> > discreteCharacter;<br><br>Esta es la especificación que he diseñado:<br><br>/**<br> * \brief Transform a char given into an Decoded Char<br> *<br> * Description: This function is used by decodeMessage. Must decode all chars and concatenate the result in phraseTotal.<br> * Length can be variable.<br> *<br> * 0 = No coin<br> * 1 = Coin<br> * 2 = Coin with half offset down<br> *<br> * - Use base 2 to set spacial position for each coin.<br> *<br> * Example: "E" length = 4<br> *                             '                   '                '<br> * 1    1    1   0         ||||||||||||        ||||<br> * 1    2    0   0         ||||||||||||        ||||  = 1     @@ = 2<br> * 1    0    0    0        ||||                                 @@<br> * 1    1    1    0        ||||@@<br> *                             ||||@@<br> *                             ||||                '<br> *                             ||||||||||||              = 0<br> *                             ||||||||||||<br> *<br> * \param[in]          decodeChar = Char you want to translate<br> * \param[out]        2dim-vector = with values 0,1,2 in array<br> *<br> */<br>vector< vector<int> > BonusCoinsController::decodeCharacter(const char *decodeChar)<br>{<br>    printf("BonusCoinsController decoding char: %s", decodeChar);<br><br>    discreteCharacter myDecodedCharacter(4, vector<int>(4));<br>    //myDecodedCharacter.push_back(vector<int> (1,1,1,0));<br><br>    /*<br>    switch (decodeChar)<br>    {<br>        case "E":<br>   /*<br>    myDecodedCharacter = ( (1,1,1,0),<br>                                              (1,2,0,0),<br>                                              (1,0,0,0),<br>                                              (1,1,1,0));<br>*/<br><br>            break;<br>            <br>        default:<br>            break;<br>    }*/<br>    return myDecodedCharacter;<br>}<br><br>Es decir, antes una entrada compuesta por 1 solo caracter: "A", "E", "~", debe devolver un vector de longitud X, que varía según el caracter introducido.<br><br>Mi falta de experiencia manejando vectores me hace complicado buscar la forma más correcta/elegante de hacer la función. De ahí mis preguntas:<br><br>- ¿Es correcto el planteamiento?<br>- ¿Cuál es la mejor manera de crear el tipo discreteCharacter si a priori no sé cuanta longitud tiene el caracter introducido? Podría hacer 2 switch pero lo veo un poco engorroso, y no sé si es lo más correcto reservarlo dentro del switch y poner un return en cada uno.<br>- ¿Cuál es la sintaxis correcta para que se pueda poner los valores de forma que "a ojo" se pueda ver que carácter es y facilitar su entendimiento? Es decir viendo:<br>myDecodedCharacter = (     (1,1,1,0),<br>                                              (1,2,0,0),<br>                                              (1,0,0,0),<br>                                              (1,1,1,0));<br><br>Si está bien tabulado, te puedes hacer a la idea que es realmente una E.<br><br>He probado con llaves, corchetes, operator= y me da errores de compilación continuamente, aun consultando la referencia: <a href="http://www.cplusplus.com/reference/vector/vector/vector/" target="_blank">http://www.cplusplus.com/reference/vector/vector/vector/</a> <br><br>Es un poco complicado para mí usar el vector de forma recursiva, así que cualquier ayuda/sugerencia es bienvenida.<br><br>Gracias por vuestro tiempo, un saludo.<br>                                           </div></body>
</html>