Herramientas de usuario

Herramientas del sitio


highlevel:c:xtra

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
highlevel:c:xtra [2008/05/28 15:03]
alfred
highlevel:c:xtra [2020/05/09 09:25] (actual)
Línea 1: Línea 1:
-====== Xtra ======+====== ​C\C++ Xtra ======
  
 ===== Lenguaje ===== ===== Lenguaje =====
Línea 329: Línea 329:
 MyClass c = b; MyClass c = b;
 </​code>​ </​code>​
 +
 +
  
  
Línea 368: Línea 370:
  
 {{ highlevel:​c:​gdarticle_cyclic1.png |}} {{ highlevel:​c:​gdarticle_cyclic1.png |}}
-=== Título 4 === 
- 
-=== Título 4 === 
  
 +=== Otros errores comunes ===
 +  * Su un código A.cpp y otro B.cpp hacen un #include de header.h, cuando se compile el primero no habrá problemas, pero al compilarse el segundo volverá a compilarse header.h y el compilador dará error. Para solucionarlo podemos utilizar las directivas del preprocesador,​ ya sea el [[highlevel:​c#​uso_del_ifndef|ifndef]] o el [[highlevel:​c#​pragma|pragma once]].
 +  * Puede que tengas una variable global en un fichero .h a la cual accedan dos .cpp, si esto ocurriese se crearían dos copias en memoria de dicha variable, con el mismo nombre produciendo un error del compilador... Únicamente has de declarar dicha variable como [[highlevel:​c#​extern|extern]]
 === Otros consejos === === Otros consejos ===
   * Cuando trabajes con la STL no pongas el ''​using namespace''​ en el archivo .h ya que reduce la efectividad de estos, lo mejor es utilizar el ''​using''​ en los ficheros .cpp y colocar el nombre completo en los .h.   * Cuando trabajes con la STL no pongas el ''​using namespace''​ en el archivo .h ya que reduce la efectividad de estos, lo mejor es utilizar el ''​using''​ en los ficheros .cpp y colocar el nombre completo en los .h.
   * Evitar las macros en C++, lo mejor es utilizar las palabras ''​const''​ o ''​inline''​ en sus respectivos casos necesarios. Pero sobretodo evita añadir las macros a los .h, en vez de eso, si no puedes esquivarlas,​ definelas en los mismos .cpp.   * Evitar las macros en C++, lo mejor es utilizar las palabras ''​const''​ o ''​inline''​ en sus respectivos casos necesarios. Pero sobretodo evita añadir las macros a los .h, en vez de eso, si no puedes esquivarlas,​ definelas en los mismos .cpp.
- 
  
 ===== std ===== ===== std =====
Línea 385: Línea 386:
   * [[highlevel:​c:​advancing#​smart_pointers|auto_ptr]]   * [[highlevel:​c:​advancing#​smart_pointers|auto_ptr]]
 Aún así, quedan elementos por ver: Aún así, quedan elementos por ver:
 +
 +
  
  
 ==== Los mapas ==== ==== Los mapas ====
 Los hashmaps y diccionarios de Java tienen su equivalente en C++ en la clase ''​std::​map<​tipo1,​ tipo2>''​. \\  Los hashmaps y diccionarios de Java tienen su equivalente en C++ en la clase ''​std::​map<​tipo1,​ tipo2>''​. \\ 
 +  * Declaración 
 +<code cpp> 
 +std::​map<​std::​string,​ std::​string>​ configMap;​ 
 +</​code>​ 
 +  * Insertar 
 +<code cpp> 
 +configMap.insert(std::​pair<​std::​string,​ std::​string>​(Name,​ Value)); 
 +</​code>​ 
 +  * Modificar 
 +<code cpp> 
 +this->​configMap[name] = value; 
 +</​code>​ 
 +  * Consultar 
 +<code cpp> 
 +std::string value = this->​configMap[name];​ 
 +</​code>​ 
 +  * Recorrer 
 +<code cpp> 
 +std::​map<​std::​string,​ std::​string>::​iterator it; 
 +for(it = this->​configMap.begin();​ it != this->​configMap.end();​ ++it) { 
 + std::​string strKey = it->​first;​ 
 + std::​string strValue = it->​second;​ 
 +
 +</​code>​ 
 +  * Saber si existe una clave (se llama al método find, si este devuelve ''​mapa.end()''​ es que no): 
 +<code cpp> 
 +std::​map<​std::​string,​ std::​string>::​iterator it = myMap.find("​adios"​);​ 
 +if (it == myMap.end()) ...  // No encontrado 
 +</​code>​
  
 ==== Las listas ==== ==== Las listas ====
highlevel/c/xtra.1211987008.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)