Articles of std

¿Podemos confiar en el truco de reducir la capacidad?

¿Está realmente garantizado que el siguiente truco de reducción de capacidad “funcionará”? int main() { std::string s = “lololololol”; s = “”; // capacity still non-zero string(s).swap(s); // ? } No parece “funcionar” para mí (porque la capacidad no es cero), y no puedo encontrar nada en el estándar que diga nada más que que […]

Es C ++ std :: set thread-safe?

Tengo una pregunta sobre la seguridad del hilo de std :: set. Por lo que sé, puedo iterar sobre un conjunto y agregar / borrar miembros y eso no invalida los iteradores. Pero considera el siguiente escenario: el hilo ‘A’ itera sobre un conjunto de shared_ptr el hilo ‘B’ ocasionalmente agrega elementos a este conjunto. […]

std :: par de referencias

¿Es válido tener un std::pair de referencias? En particular, ¿hay problemas con el operador de asignación? De acuerdo con este enlace , no parece haber un tratamiento especial con operator =, por lo que no se podrá generar el operador de asignación predeterminado. Me gustaría tener un pair y poder asignarle otro par (de valores […]

¿Qué puedo y no puedo especializar en el espacio de nombres estándar?

Los usuarios pueden agregar especializaciones explícitas al std nombres std . Sin embargo, hay algunas plantillas de las que estoy explícitamente prohibido especializarme. ¿Qué plantillas puedo y no puedo especializar?

std :: shared_ptr thread safety

He leído eso “Múltiples hilos pueden leer y escribir simultáneamente diferentes objetos shared_ptr, incluso cuando los objetos son copias que comparten propiedad”. ( MSDN: seguridad de subprocesos en la biblioteca estándar de C ++ ) ¿Eso significa que cambiar el objeto shared_ptr es seguro? Para una instancia, ¿el siguiente código se considera seguro? shared_ptr global […]

¿Existe una clase de rango en C ++ 11 para usar con rangos basados ​​en rangos?

Me encontré escribiendo esto hace un momento: template class range_class { public: class iterator { friend class range_class; public: long int operator *() const { return i_; } const iterator &operator ++() { ++i_; return *this; } iterator operator ++(int) { iterator copy(*this); ++i_; return copy; } bool operator ==(const iterator &other) const { return […]

¿Cómo puedo usar las clases de Biblioteca estándar (STL) en mi interfaz dll o ABI?

Ha habido algunas preguntas antes sobre la exportación de una clase que contiene clases stl en relación con el estudio visual de advertencia C4251: por ejemplo, esta pregunta o esta pregunta. Ya leí la excelente explicación en UnknownRoad. Desactivar ciegamente la advertencia parece un poco peligroso, aunque puede ser una opción. Envolver todas esas clases […]

stdlib y salida coloreada en C

Estoy haciendo una aplicación simple que requiere salida de color. ¿Cómo puedo hacer que mi salida se coloree como emacs y bash do? No me importa Windows, ya que mi aplicación es solo para sistemas UNIX.

Cómo obtener un mensaje de error cuando ifstream open falla

ifstream f; f.open(fileName); if ( f.fail() ) { // I need error message here, like “File not found” etc. – // the reason of the failure } ¿Cómo obtener un mensaje de error como una cadena?

¿Es seguro el hilo std :: vector o boost :: vector?

Tengo varios hilos simultáneamente llamando a push_back() en un objeto compartido de std::vector . ¿Es seguro el hilo std::vector ? ¿O necesito implementar el mecanismo yo mismo para que sea seguro? Quiero evitar realizar trabajos adicionales de “locking y liberación” porque soy un usuario de la biblioteca en lugar de un diseñador de la biblioteca. […]