嗨,大家好!我是一行。今天咱们要学习超厉害的 STL,它就像一个万能工具箱,里面有各种各样好用的工具,能让咱 C++编程更高效、更方便。快来一起探索这个基础又强大的库吧!
一、STL 中的容器:存储数据的好帮手STL 里的容器就像是不同形状的盒子,用来装各种数据。先说说 vector 容器,它就像一个可以伸缩的数组。
#include <iostream>
#include <vector>
int main() {
// 创建一个 vector 容器,用来装整数
std::vector<int> myVector;
// 往容器里添加元素,就像往盒子里放东西
myVector.push_back(5);
myVector.push_back(10);
// 访问容器里的元素
std::cout << "第一个元素是: " << myVector[0] << std::endl;
return 0;
}
运行结果就会输出第一个元素 5。小贴士:vector
会自动管理内存,当元素增多时它会自动扩容,但扩容可能会有一些性能开销哦。
再看看 list 容器,它像一条链,每个元素在内存里不是连续存放的。
#include <iostream>
#include <list>
int main() {
std::list<int> myList;
myList.push_back(3);
myList.push_back(7);
// 遍历 list 容器
for (auto it = myList.begin(); it!= myList.end(); it++) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
这个代码会输出 3 7。这里用迭代器 it
来遍历 list,这是访问 list 元素的常用方法。
二、STL 中的算法:数据处理专家STL 里有很多算法,就像一个个小工匠,能对容器里的数据进行加工。比如 sort
算法可以给容器里的数据排序。
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> numbers = {10, 5, 8, 2, 7};
// 使用 sort 算法给 vector 排序
std::sort(numbers.begin(), numbers.end());
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
运行后会输出 2 5 7 8 10。小贴士:sort
算法默认是升序排序,如果想降序排序,可以自己写一个比较函数传给 sort
。
还有 find
算法,能在容器里找特定的元素。
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> values = {4, 9, 6, 3, 9};
// 找值为 9 的元素
auto it = std::find(values.begin(), values.end(), 9);
if (it!= values.end()) {
std::cout << "找到了 9" << std::endl;
} else {
std::cout << "没找到 9" << std::endl;
}
return 0;
}
三、STL 的实际应用场景假如我们要处理学生的成绩数据。可以用 vector 容器来存储成绩,然后用 sort
算法对成绩排序,找出最高分、最低分等。
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> scores = {85, 92, 78, 65, 95};
std::vector<int> scoresCopy = scores; // 先复制一份数据
std::sort(scores.begin(), scores.end());
std::cout << "最高分是: " << scores.back() << std::endl;
std::cout << "最低分是: " << scores.front() << std::endl;
// 用 find 算法找特定成绩
auto it = std::find(scoresCopy.begin(), scoresCopy.end(), 92);
if (it!= scoresCopy.end()) {
std::cout << "92 分的成绩在第 " << std::distance(scoresCopy.begin(), it) + 1 << " 个位置" << std::endl;
}
return 0;
}
今天的 C++学习之旅就到这里啦!记得动手敲代码。祝大家学习愉快,C++学习节节高!