C++笔记
目录
环境设置
概念:环境初始化
- 用途:初始化 C++ 编译环境。
- 核心用法:
%%clangpp -std=c++17 -O2 -- 1 2 3 - 说明:
%%clangpp: Jupyter Notebook 中的魔法命令,用于编译和运行 C++ 代码。-std=c++17: 指定 C++ 语言标准为 C++17。-O2: 优化级别,O2 表示进行中等程度的优化。-- 1 2 3: 传递给程序的命令行参数。
1 |
|
String 类
函数:substr
- 用途:提取字符串的子字符串。
- 核心用法:
substr(pos, len)和substr(pos) - 参数:
pos: 起始下标len: 提取长度(可省略,表示到末尾)
- 返回:提取到的子串
- 说明:
pos从 0 开始;若pos > size抛出out_of_range
1 | string str = "Hello world"; |
函数:erase
- 用途:删除字符串中的字符。
- 核心用法:
erase(pos, len)、erase(pos)、erase(iterator)、erase(first, last) - 参数:
pos: 删除起始位置len: 删除长度it: 指向要删除字符的迭代器first,last: 删除范围的起始和结束迭代器(开区间)
- 返回:经过删除操作后的字符串引用
- 说明:使用迭代器删除时需注意迭代器失效问题
1 | string s = "Hello world"; |
函数:reverse
- 用途:反转容器中元素的顺序。
- 核心用法:
reverse(container.begin(), container.end())
1 |
|
Vector 类
概念:vector 长度
- 用途:获取
vector中元素的个数。 - 核心用法:
vec.size() - 返回:元素个数 (
size_t) - 说明:O(1)
1 | vector<int> vec = {1, 2, 3, 4, 5}; |
概念:vector 最大值
- 用途:查找
vector中的最大值。 - 核心用法:
*max_element(vec.begin(), vec.end()) - 注意:如果
vector为空,行为未定义。
1 | vector<int> v = {1, 5, 2, 8, 3}; |
概念:创建指定大小的 vector<bool>
- 用途:创建一个指定大小的
vector<bool>。 - 核心用法:
vector<bool> vec(n)和vector<bool> vec(n, value) - 说明:
vector<bool>是一个空间优化的特化版本。
1 | vector<bool> v1(10); // 10个false |
概念:创建空的 int 向量并添加元素
- 用途:创建一个空的
int类型的vector,并向其中添加元素。 - 核心用法:
vector<int> vec;和vec.push_back(element);
1 | vector<int> vec; |
概念:创建包含无穷大值的 int 向量
- 用途:创建一个
int类型的vector,并将元素设置为无穷大。 - 核心用法:使用
numeric_limits<int>::max()。
1 |
|
概念:对 vector 进行排序
- 用途:对
vector中的元素进行从小到大排序。 - 核心用法:
sort(vec.begin(), vec.end())
1 |
|
概念:删除 vector 中的重复元素
- 用途:删除
vector中的重复元素。 - 核心用法:先排序,然后使用
unique和erase。
1 |
|
函数:reverse
- 用途:反转容器中元素的顺序。
- 核心用法:
reverse(container.begin(), container.end())
1 |
|
函数:remove
- 用途:移除容器中所有等于指定值的元素。
- 核心用法:
remove(container.begin(), container.end(), value) - 说明:不改变容器大小,需要配合
erase使用。
1 | vector<int> v = {1, 2, 3, 2, 4, 2, 5}; |
函数:fill
- 用途:将指定范围内的所有元素设置为给定值。
- 核心用法:
fill(first, last, value)
1 | vector<int> nums = {1, 2, 3, 4, 5}; |
算法
概念:动态规划求解 LIS
- 用途:找到给定序列的最长递增子序列的长度。
- 核心思想:
dp[i]表示以vec[i]结尾的最长递增子序列的长度。 - 时间复杂度:O(n^2)
1 | vector<int> vec = {4, 5, 1, 2, 3}; |
概念:二分查找优化 LIS
- 用途:使用二分查找优化 LIS 算法。
- 核心思想:维护一个
tails数组,tails[i]表示长度为i+1的所有递增子序列中最小的尾部元素。 - 时间复杂度:O(n log n)
1 | vector<int> vec = {10, 9, 2, 5, 3, 7, 101, 18}; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Leion's Blog!
评论





