知识点回顾
二分查找
lower_bound(a,a+n,k)-a;//第一个大于等于k
upper_bound(a,a+n,k)-a;//第一个大于k
binary_search(a,a+n,k);//配合上述使用,一个二分查找封装函数
string类型
string类型如何加元素,使用+加入元素,例如
str += “, World!”; // 添加字符串
str += ‘!’; // 添加单个字符
或者是str.append();
遍历的话依然是用i遍历
unordered_set
unordered_set 是一个无序集合容器,用于存储唯一的元素,底层通过哈希表实现。
常见用法:
存储需要快速查找的唯一元素集合。
用于去除重复元素。
示例代码:
#include <unordered_set>
#include <iostream>
int main() {
std::unordered_set<int> mySet;
mySet.insert(10);
mySet.insert(20);
mySet.insert(30);
// 查找元素
if (mySet.find(20) != mySet.end()) {
std::cout << "找到元素 20。" << std::endl;
}
// 遍历元素
for (const auto& elem : mySet) {
std::cout << elem << " ";
}
std::cout << std::endl;
return 0;
}
unordered_map
unordered_map 是一个无序映射容器,用于存储键值对(key-value),其中键是唯一的,底层同样通过哈希表实现。
常见用法:
用于快速查找键对应的值。
实现字典或关联数组功能。
复制代码
#include <unordered_map>
#include <iostream>
int main() {
std::unordered_map<std::string, int> myMap;
// 插入键值对
myMap["apple"] = 1;
myMap["banana"] = 2;
myMap["cherry"] = 3;
// 访问值
std::cout << "banana 的值是: " << myMap["banana"] << std::endl;
// 遍历键值对
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
输入输出
scanf和printf比较快