C++零碎知识点(更新中)

1、priority_queue 默认是大根堆,但可以通过一些方式将其转换为小根堆。

// 定义一个小根堆
    std::priority_queue<int, std::vector<int>, std::greater<int>> min_heap;
//定义一个大根堆
    std::priority_queue<int, std::vector<int>, std::less<int>> max_heap;

2、C++hashset用unordered_set

unordered_set<int> hashset; 声明

hashset.insert(3); 插入

hashset.find(5) != hashset.end() 查找

hashset.erase(1); 删除

hashset.size() 总个数

3、数组默认不初始化,静态储存期的全局数组会初始化。

数组初始化方法:

memset(arr, 0, sizeof(arr)); // 将数组 arr 的所有元素设置为 0

函数:void* memset(void* ptr, int value, size_t num);


声明数组的方法:

int row[9][9];

4、vector拼接方法:

// 在vec1的后面拼接vec2
    vec1.insert(vec1.end(), vec2.begin(), vec2.end());

// 在vec3的前面拼接vec1
    vec3.insert(vec3.begin(), vec1.begin(), vec1.end());

5、在C++中,.size()是成员函数,用于返回成员或元素数量sizeof()是运算符,用于计算类型或对象的大小,以字节为单位。

6、在C++中,要将字符(char)添加到字符串(string),可以使用 push_back 方法或者直接使用 += 运算符。

7、unordered_map使用方法:

创建:
unordered_map<KeyType, ValueType> myMap;
unordered_map<std::string, int> ageMap;

插入:
myMap[key] = value;

访问:
value = myMap[key];

查找:
auto it = ageMap.find("Alice");
if (it != ageMap.end()) {
    // 元素存在
    
} else {
    // 元素不存在
}

删除:
myMap.erase(key);

遍历:
for (const auto& pair : myMap) {
    // pair.first 是键,pair.second 是值
    std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
}

获取大小:
size_t size = myMap.size();

是否为空:
if (myMap.empty()) {
    // map为空
}

取值:
.first key
.second val


8、队列使用方法:

创建:
queue<int> myQueue;

添加:
myQueue.push(10);

访问前端:
myQueue.front();

弹出前端:
myQueue.pop();

是否为空:
myQueue.empty();

元素数量:
myQueue.size();

9、栈使用方法:

创建:
stack<int> myStack;

压入:
myStack.push(10);

访问栈顶:
myStack.top();

弹出:
myStack.pop();

空:
myStack.empty()

大小:
myStack.size()

10、位运算使用方法:

按位与(&):将两个操作数的每个对应位都为1时,结果的对应位为1,否则为0:
int result = num1 & num2;

按位或(|):将两个操作数的每个对应位都为0时,结果的对应位为0,否则为1:
int result = num1 | num2;

按位异或(^):将两个操作数的每个对应位相同则为0,不同则为1:
int result = num1 ^ num2;

按位取反(~):对操作数的每个位取反(0变为1,1变为0):
int result = ~num;

左移(<<):将操作数的所有位向左移动指定的位数,并在低位补零:
int result = num << shift_amount;

右移(>>):将操作数的所有位向右移动指定的位数。对于有符号整数,右移会用符号位填充左侧空出的位;对于无符号整数,右移会用0填充左侧空出的位:
int result = num >> shift_amount;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值