1.11 C++ STL
一、STL 容器
- 序列容器:vector、list、forward_list、deque、array、string
- 关联式容器(自动排序、基于红黑树):set、map、multiset、multimap
- 无序关联式容器(基于哈希表):unordered_set、unordered_map、unordered_multiset、unordered_multimap
- 适配器容器(是对其他容器的封装):stack、queue、priority_queue
二、STL 算法
std::vector<int> v {1, 2, 3, 4};
auto it = std::find(v.begin(), v.end(), 3); // 返回迭代器
if (it != v.end()) std::cout << "Found at: " << it - v.begin();
std::sort(v.begin(), v.end()); // 默认升序
std::sort(v.begin(), v.end(), std::greater<int>()); // 降序
// 1、优先使用 lambda
std::sort(v.begin(), v.end(), [](int a, int b) { return a > b; });
// 2、使用 仿函数
struct Compare {
bool operator()(int a, int b) const {
return a < b; // 升序排序
}
};
std::sort(v.begin(), v.end(), Compare());
// 3、自定义比较函数
bool compare(int a, int b) {
return a > b; // 降序排序
}
std::sort(v.begin(), v.end(), compare);
三、所有容器共有的核心方法
方法 |
作用 |
示例(以 |
|
判断容器是否为空 |
|
|
返回元素数量 |
|
|
清空容器 |
|
|
交换两个容器的内容 |
|
|
返回迭代器(含const版本) |
|
四、vector
vector<int> a;
vector<int> a(n);
vector<int> a(n,1);
vector<int> a({1,2,3})
v.front() / v.back(); v.push_back(data) / v.emplace_back(data) / v.pop_back(); v.insert(iterator, data) / v.erase(iterator) / v.erase(first, last); // 下标 -> 迭代器:v.begin() + index; // 迭代器 -> 下标:it - v.begin();
五、string
//1.
string str1; //生成空字符串
//2.
string str2("123456789"); //生成"1234456789"的复制品
//3.
string str3("12345", 0, 3);//结果为"123" ,从0位置开始,长度为3
//4.
string str4("123456", 5); //结果为"12345" ,长度为5
//5.
string str5(5, '2'); //结果为"22222" ,构造5个字符'2'连接而成的字符串
//6.
string str6(str
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
C++/嵌入式开发 秋招面经 文章被收录于专栏
一名985硕,在25年秋招中斩获多个C++/嵌入式开发Offer。本专栏将分享我的面经,涵盖C/C++、操作系统、计算机网络、ARM体系与架构、Linux应用/驱动开发、Qt、通信协议及开发工具链等核心内容。

查看5道真题和解析