c++stl库常用库函数
时间: 2025-07-02 09:31:09 浏览: 14
### C++ STL 常用库函数及其示例
#### 容器类
C++ STL 提供了多种容器来存储数据,常见的有 `std::vector`、`std::list` 和 `std::deque` 等动态数组以及关联容器如 `std::set` 和 `std::map`。
- **Vector**
动态数组支持随机访问。
```cpp
std::vector<int> vec = {1, 2, 3};
vec.push_back(4); // 添加元素到末尾
int lastElement = vec.back(); // 获取最后一个元素
vec.pop_back(); // 删除最后一个元素
```
- **List**
双向链表适合频繁插入删除操作。
```cpp
std::list<int> lst = {10, 20, 30};
lst.push_front(5);
lst.push_back(35);
```
- **Set**
关联容器自动保持键值唯一并按升序排列。
```cpp
std::set<int> s;
s.insert(10);
auto it = s.find(10); // 查找是否存在该元素
if (it != s.end()) {
s.erase(it); // 移除找到的元素
}
```
- **Map**
键值对集合,按键排序。
```cpp
std::map<std::string, int> m;
m["apple"] = 1;
m["banana"] = 2;
for(auto const& pair : m){
std::cout << pair.first << ": " << pair.second << "\n";
}
```
#### 迭代器与算法
STL 不仅提供了丰富的容器还有一系列通用算法可以作用于这些容器之上通过迭代器实现泛型编程。
- **Upper Bound**
寻找大于给定值的第一个位置。
```cpp
std::vector<int> data = {1, 2, 3, 4, 5};
auto ub_it = std::upper_bound(data.begin(), data.end(), 3);
if(ub_it != data.end()){
std::cout << *ub_it; // 输出4
}else{
std::cout << "No upper bound found.";
}
```
- **Sort and Reverse**
对序列进行排序或者逆序处理。
```cpp
std::vector<int> numbers = {9, 8, 7, 6, 5};
std::sort(numbers.begin(), numbers.end()); // 升序排序
std::reverse(numbers.begin(), numbers.end()); // 颠倒顺序
```
#### 特殊功能
一些特定的功能也集成到了标准模板库当中比如拷贝赋值运算符重载等机制方便对象间的数据传递管理。
- **Operator Overloading Example**
实现自定义类型的深复制逻辑。
```cpp
class MyVector {
public:
std::vector<int>* ptr;
MyVector(const MyVector &other):ptr(new std::vector<int>(*other.ptr)){}
~MyVector(){
delete ptr;
}
MyVector& operator=(const MyVector &rhs){
*(this->ptr)=*(rhs.ptr);
return *this;
}
};
```
阅读全文
相关推荐


















