C++ se usa ampliamente para la programación competitiva. Se prefiere debido a su confiabilidad, ejecución eficiente, fragmentos cortos, etc. La mayoría de los codificadores se ha vuelto adaptable, ya que también brinda los beneficios de la Biblioteca de plantillas estándar (STL) .
C++ STL es la columna vertebral de la programación. Las funciones incorporadas reducen un fragmento de código incluso a una sola línea a veces. Entonces, los siguientes son algunos datos interesantes sobre la biblioteca de plantillas estándar (STL) en C++:
1) Los valores se pueden asignar mediante un par de {} a un contenedor.
CPP
// Various ways to assign value by a pair // Method 1 pair<int, int> p = make_pair(3, 4); // Method 2 pair<int, int> p = { 3, 4 }; // Method 3 pair<int, <char, int> > p = { 3, { 'a', 10 } };
2) Como estamos familiarizados con el par, también hay una cosa conocida como tuplas .
// A tuple can hold elements of different types tuple t = {3, 4, 5, 'a'};
3) Podemos evitar escribir todos los archivos de encabezado, como iostream, vector, string, math, etc. ¡Incluir solo un archivo de encabezado hará el trabajo!
El archivo de encabezado es <bits/stdc++.h>.
#include<bits/stdc++.h> using namespace std;
4) No necesita codificar el algoritmo euclidiano para una función GCD, en su lugar, podemos usar __gcd(value1, value2) . Esta función devuelve el máximo común divisor de dos números.
Example: __gcd(18, 45) = 9
CPP
// CPP Program to demonstrate the GCD function #include <bits/stdc++.h> using namespace std; int main() { int r = __gcd(10, 15); cout << r; return 0; }
5
Nota: Esto funciona solo en GCC.
5) En C++, puede convertir directamente un número entero a una string usando ‘ to_string(); ‘ dominio.
CPP
// CPP Program to demonstrate the functionality of // to_string() function #include <bits/stdc++.h> using namespace std; // Driver Code int main() { int a = 97; string t = to_string(a); cout << t; }
97
6) En C++, puede convertir directamente una string en un número entero usando ‘ stoi(); ‘ dominio.
CPP
// CPP Program to demonstrate the functionality of // stoi() function #include <bits/stdc++.h> using namespace std; int main() { string a = "2665"; int t = stoi(a); cout<<t; }
2665
7) Un conjunto almacena los elementos en orden ascendente por defecto.
set<datatype> setname;
Nota: set<tipo de datos, mayor <tipo de datos>> setname; se utiliza para almacenar valores en un conjunto en orden descendente .
8) Cada variable declarada fuera de las funciones es estática y tiene el valor predeterminado de 0.
CPP
// CPP Program to demonstrate variables declared outside of // functions are static and have the default value of 0 #include <bits/stdc++.h> using namespace std; int a[5]; int main() { // Values in a[] are 0 for (int i = 0; i < 5; i++) cout << a[i] << " "; // Values in b[] are garbage cout << endl; int b[5]; for (int i = 0; i < 5; i++) cout << b[i] << " "; return 0; }
0 0 0 0 0 4196880 0 4196368 0 846571392
9) Si declara una array dentro de una función, el valor de sus elementos es basura, pero para establecer el valor de todos los elementos en cero, podemos usar,
TYPE a[n] = { };
CPP
// CPP Program to set the value of all elements to zero of // an array in a function #include <bits/stdc++.h> using namespace std; int main() { // Values in a[] are 0 int a[5] = {}; for (int i = 0; i < 5; i++) cout << a[i] << " "; // Values in b[] are garbage cout << endl; int b[5]; for (int i = 0; i < 5; i++) cout << b[i] << " "; return 0; }
0 0 0 0 0 4196896 0 4196368 0 -345132736
10) El número de bits establecidos en la representación binaria de un número x se puede encontrar mediante __builtin_popcountll(x) . Básicamente, esta función cuenta el número de uno (bits establecidos) en un número entero.
CPP
// CPP Program to demonstrate the functionality of // __builtin_popcountll(x) #include <bits/stdc++.h> using namespace std; int main() { int x = 5; // 0101 cout << __builtin_popcountll(x); return 0; }
2
Nota: Esto funciona solo en GCC.
11) Memset establece los valores de bytes (o caracteres sin firmar) de un bloque de memoria. Podemos usar memset para inicializar todos los elementos de una array de enteros a 0 o -1 pero no a los otros valores.
Inicializar todos los elementos de una array que no sean 0 o -1 no establecerá todos los elementos como se desea, porque memset establece los valores de los bytes, por ejemplo, llamar a memset(arr, 1, 4) para establecer todos los elementos de una array int arr [4]. se convierte en 0x01 0x01 0x01 0x01. (es decir, 16 843 009 dependiendo de la arquitectura de su CPU) Pero su valor esperado es 0x00 0x00 0x00 0x01.
CPP
// CPP Program to demonstrate that memset initialises all // elements of an integer array to 0 or -1 #include <bits/stdc++.h> using namespace std; int main() { int a[5]; // all elements of A are zero memset(a, 0, sizeof(a)); for (int i = 0; i < 5; i++) cout << a[i] << " "; cout << endl; // all elements of A are -1 memset(a, -1, sizeof(a)); for (int i = 0; i < 5; i++) cout << a[i] << " "; cout << endl; // will not work memset(a, 5, sizeof(a)); for (int i = 0; i < 5; i++) cout << a[i] << " "; }
0 0 0 0 0 -1 -1 -1 -1 -1 84215045 84215045 84215045 84215045 84215045
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.