Usando std::vector::reserve siempre que sea posible

En C++, los vectores son arrays dinámicas. A diferencia de las arrays, no tienen un tamaño fijo. Pueden crecer o encogerse según sea necesario. A los vectores se les asigna memoria en bloques de ubicaciones contiguas. Cuando la memoria asignada para el vector no alcanza para almacenar nuevos elementos, se asigna un nuevo bloque de … Continue reading «Usando std::vector::reserve siempre que sea posible»

forward_list::begin() y forward_list::end() en C++ STL

La lista de reenvío en STL implementa una lista enlazada individualmente. Introducida desde C++ 11, la lista de reenvío es más útil que otros contenedores en las operaciones de inserción, eliminación y movimiento (como ordenar) y permite la inserción y eliminación constante de elementos en el tiempo. Se diferencia de la lista por el hecho … Continue reading «forward_list::begin() y forward_list::end() en C++ STL»

array::operador[ ] en C++ STL

Las clases de arreglos son generalmente más eficientes, livianas y confiables que los arreglos de estilo C. La introducción de la clase de array de C++ 11 ha ofrecido una mejor alternativa para las arrays de estilo C. array::operador[] Este operador se usa para hacer referencia al elemento presente en la posición dada dentro del … Continue reading «array::operador[ ] en C++ STL»

Deque::empty() y deque::size() en C++ STL

Las colas Deque o Double Ended son contenedores de secuencias con la función de expansión y contracción en ambos extremos. Son similares a los vectores, pero son más eficientes en caso de inserción y eliminación de elementos al final, y también al principio. A diferencia de los vectores, es posible que no se garantice la … Continue reading «Deque::empty() y deque::size() en C++ STL»

Invalidación de iterador en C++

Cuando el contenedor al que apunta un iterador cambia de forma internamente, es decir, cuando los elementos se mueven de una posición a otra, y el iterador inicial sigue apuntando a la antigua ubicación no válida, se denomina invalidación del iterador. Se debe tener cuidado al usar iteradores en C++. Cuando iteramos sobre nuestro contenedor … Continue reading «Invalidación de iterador en C++»

std::adjacent_difference en C++

Calcular diferencia adyacente de rango Asigna a cada elemento en el rango que comienza en resultado, la diferencia entre su elemento correspondiente en el rango [primero, último] y el que lo precede (excepto para *resultado, que se asigna *primero). Si x representa un elemento en [primero, último] e y representa un elemento en resultado, la … Continue reading «std::adjacent_difference en C++»

estándar::iter_swap en C++

std::swap se utiliza para intercambiar elementos entre dos contenedores. Una de las otras formas de hacer lo mismo es facilitada por std::iter_swap, que como sugiere el nombre, se usa para intercambiar los elementos con la ayuda de un iterador. Simplemente intercambia los valores de los elementos señalados por los iteradores. Si observamos su funcionamiento interno, … Continue reading «estándar::iter_swap en C++»

std::distancia en C++

Si tenemos dos iteradores y queremos encontrar el número total. de elementos entre los dos iteradores, eso lo facilita std::distance() , definido dentro del archivo de encabezado. Tiene una característica importante que, al igual que tenemos vectores en la ciencia, que tienen tanto magnitud como dirección, std::distance también tiene una dirección asociada. Esto significa que … Continue reading «std::distancia en C++»

std::find_if , std::find_if_not en C++

estándar::buscar_si Devuelve un iterador al primer elemento del rango [primero, último] para el que pred(Función unaria) devuelve verdadero . Si no se encuentra tal elemento, la función regresa en último lugar. Plantilla de función: InputIterator find_if (InputIterator first, InputIterator last, UnaryPredicate pred); first, last :range which contains all the elements between first and last, including … Continue reading «std::find_if , std::find_if_not en C++»

Rotación de un punto sobre otro punto en C++

Ya hemos discutido la rotación de un punto P sobre el origen en el Conjunto 1 y el Conjunto 2 . La rotación del punto P sobre el origen con un ángulo θ en el sentido contrario a las agujas del reloj se da a continuación: Rotation of P about origin: P * polar(1.0, θ) … Continue reading «Rotación de un punto sobre otro punto en C++»