Tabla de contenido
Consideraciones sobre el conjunto de bits
Sección de bitset: ejemplo de código
Sección de bitset: visualización de resultados
Similitudes y diferencias entre Bitset y vector
Sección de vectores: ejemplo de código
Sección de vectores: visualización de resultados
Uso de la bandera de bits STL
Consideraciones sobre el conjunto de bits
Los bits pueden almacenar dos estados: establecer (1) o restablecer (0).
Algoritmo STL de Bitset
Sección de bitset: ejemplo de código
Parte uno
#include <iostream>
#include <bitset>
#include <vector>
using namespace std;
int main()
{
bitset<4> BitFlag1("1101"),BitFlag2(1000),BitFlag3(0b0010); // Bitset中的元素要么为1要么为0
bitset<4> BitFlag4(BitFlag1^BitFlag2);
cout << BitFlag1 << endl;
cout << BitFlag1.flip() << endl; // 全部按位取反
cout << BitFlag3 << endl;
cout << BitFlag3[1] << endl; // 用下标访问元素
cout << (BitFlag1 & BitFlag2^BitFlag3 | BitFlag4) << endl;
cout << "BitFlag1中1的个数是" << BitFlag1.count() << endl;
cout << "将BitFlag4的第0位置0,得" << BitFlag4.reset(1) << endl;
cout << "将BitFlag4的第0位置1,得" << BitFlag4.set(1) << endl;
}
La segunda parte
#include <vector>
#include <bitset>
#include <iostream>
#include <string>
using namespace std;
int main()
{
bitset<4> BitFlag1(3), BitFlag2(8), BitFlag3;
BitFlag3 = BitFlag1.to_ullong() + BitFlag2.to_ullong(); // to_ullong将二进制变量转化为十进制无符号长长整型(unsigned long long)变量
cout << BitFlag3.to_ulong() << endl; // 与to_ullong功能一样,将二进制变量转换为unsigned long型的变量
string Num = to_string(8 + 7); // to_string用于将bitset类型的变量转换为string类型的变量
cout << Num + "sss" << endl; // 此时Num变成了string类型的字符串
}
Sección de bitset: visualización de resultados
Encontraremos que: BitFlag es 1101, pero es 1011 en orden inverso en la memoria.
Las similitudes y diferencias entre Bitset y vector <bool>
diferente |
Bitset solo puede contener un número limitado de bits para operaciones, por lo que debemos incluir claramente el número de bits antes de usar bitset, y el vector <bool> puede expandir dinámicamente la memoria. En teoría, puede contener un número ilimitado de bits para operaciones, y el primero puede realizar operaciones de bits. , Este último no lo es. |
con |
Los elementos contenidos en Bitset y vector <bool> son ambos 1 o 0. |
Sección V ector <bool>: ejemplo de código
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<bool> VectorBoolArray1{ 1,1,0,1 },VectorBoolArray2;
VectorBoolArray1.flip(); // 按位取反
VectorBoolArray2.push_back(1);
VectorBoolArray2.push_back(0);
VectorBoolArray2.push_back(0);
VectorBoolArray2.push_back(0);
VectorBoolArray2[2] = 1;
VectorBoolArray2.at(1) = 0;
}
// STL算法均适用于vector<bool>,除此之外还多了一个其他vector容器没有的函数:flip按位取反函数.
Sección de vector <bool>: visualización de resultados
Descubrimos que el orden en el que el vector <bool> almacena las variables bool es el mismo que el orden de entrada de las variables, que es diferente de la disposición inversa del conjunto de bits.