C++ STL(标准模板库)是一个强大而丰富的库,提供了许多实用的容器和算法函数。在这篇博客中,我们将介绍一些常用的容器和算法函数,并解析它们的使用方法。
常用容器
1. vector
vector 是一个动态数组,可动态调整大小。它通过连续的内存块存储元素,并提供了许多便捷的操作函数,比如插入、删除和访问元素。
#include <vector>
int main() {
std::vector<int> vec;
// 在末尾插入元素
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
// 访问元素
int element = vec[0];
// 迭代器遍历
for(auto it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
2. list
list 是一个双向链表,不支持随机访问。它提供了常数时间内的插入和删除操作,但访问元素的时间为线性时间。
#include <list>
int main() {
std::list<int> myList;
// 在末尾插入元素
myList.push_back(1);
myList.push_back(2);
myList.push_back(3);
// 在开头插入元素
myList.push_front(0);
// 迭代器遍历
for(auto it = myList.begin(); it != myList.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
3. map
map 是一个关联容器,它存储一个键-值对的集合。每个键在 map 中是唯一的,允许快速的查找操作。
#include <map>
int main() {
std::map<std::string, int> myMap;
// 插入键-值对
myMap["Alice"] = 18;
myMap["Bob"] = 22;
myMap["Charlie"] = 30;
// 访问值
int age = myMap["Alice"];
// 迭代器遍历
for(auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
}
return 0;
}
算法函数解析
1. 排序算法
STL 提供了多种排序算法,包括快速排序(sort
)、归并排序(merge
)和堆排序(make_heap
、sort_heap
)等。这些算法可以应用于各种容器,比如 vector、list 和数组。
#include <algorithm>
#include <vector>
int main() {
std::vector<int> myVector = {4, 2, 5, 1, 3};
// 排序
std::sort(myVector.begin(), myVector.end());
// 输出结果
for(auto it = myVector.begin(); it != myVector.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
2. 查找算法
STL 提供了多种查找算法,包括线性查找(find
)、二分查找(binary_search
)和区间查找(equal_range
)等。这些算法可以应用于有序和无序的容器。
#include <algorithm>
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
// 查找元素
auto it = std::find(myVector.begin(), myVector.end(), 3);
if(it != myVector.end()) {
std::cout << "Element found at index " << std::distance(myVector.begin(), it) << std::endl;
} else {
std::cout << "Element not found" << std::endl;
}
return 0;
}
3. 算术算法
STL 提供了一些常用的算术算法,比如求和(accumulate
)、最大值(max_element
)和最小值(min_element
)等。这些算法可以应用于数字类型的容器。
#include <algorithm>
#include <numeric>
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
// 求和
int sum = std::accumulate(myVector.begin(), myVector.end(), 0);
std::cout << "Sum: " << sum << std::endl;
// 最大值
auto max = std::max_element(myVector.begin(), myVector.end());
std::cout << "Max: " << *max << std::endl;
// 最小值
auto min = std::min_element(myVector.begin(), myVector.end());
std::cout << "Min: " << *min << std::endl;
return 0;
}
以上只是 STL 容器和算法函数的一小部分内容,它们提供了丰富的功能和灵活的应用方式,可以让我们更加高效地编写 C++ 程序。希望本文对您有所帮助。
参考资料:
- https://www.cplusplus.com/reference/stl/
本文来自极简博客,作者:数据科学实验室,转载请注明原文链接:C++ STL标准库:常用容器