<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>