字符串
string s;
s.size();
s.length();
ranges::sort(s); // 将字符串的字符排序
使用istringstream辅助拆分字符串
std::string path = "Assets/Textures/Player.png";
std::istringstream ss(path);
std::string segment;
while (std::getline(ss, segment, '/'))
{
std::cout << segment << '\n';
}
// 输出
Assets
Textures
Player.png
使用题目:
将数字字符转换成整数:
stoi(token.c_str())
Vector
res.empty(); // 验证是否为空
res.back(); // 返回最后一个的值
res.begin(); // 返回开头下标
res.end(); // 返回结尾下标
res.reserve(10); // 分配容量,不创建元素。res.size() 仍然为 0。
res.resize(10); // 实际创建 n 个元素。res.size() 会变为 n。
ranges::find(res, 10) // 寻找某个值的index
ranges::reverse(row) // 翻转
/* Unique去重:把所有重复的值放到末尾,然后返回一个迭代器 */
std::vector<int> v = {1, 2, 2, 3, 3, 3, 4};
auto it = std::unique(v.begin(), v.end());
// 结合erase可以删除这些重复元素
v.erase(it, v.end());
二叉树
排序
vector<vector<int>>& intervals
sort(intervals.begin(), intervals.end());
ranges::sort(intervals, {}, [](auto& p) { return p[1]; });
数组
int rows[9][9];
int subboxes[3][3][9] = {0};
memset(rows, 0, sizeof(rows));
哈希
unordered_map<int, int> u_map;
// 除去某个值
u_map.erase(key);
// 结构化绑定:遍历unordered map,忽略key,只取value
for (auto &[_, value] : u_map)
{
res.push_back(value);
}
随机数
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
srand((unsigned)time(NULL));
int n = 10; // 随机数范围
std::cout << rand() % n << std::endl; // 每次运行都可能不同
return 0;
}
Lambda
auto dfs = [&](this auto&& dfs, int index)
{
if (index == n)
{
ans.emplace_back(path);
return;
}
for (char c : MAPPING[digits[index] - '0'])
{
path[index] = c; // 直接覆盖,而不像其他问题一样pop_back
dfs(index + 1);
}
};
时间复杂度
排序:O(nlogn)
哈希:O(n)

Leave a comment