C++ STL 容器和算法:详解和实例演示
C STL(Standard Template Library)提供了丰富的容器和算法,用于实现各种常见的数据结构和算法操作。下面是对 C STL 容器和算法的详解和实例演示:
STL 提供了多种容器,包括向量(vector)、链表(list)、双端队列(deque)、集合(set)、映射(map)、堆(heap)、栈(stack)、队列(queue)等。
#include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; // 遍历向量并输出每个元素 for (const auto& elem : vec) { std::cout << elem << " "; } std::cout << std::endl; return 0; }
STL 提供了大量的算法,包括排序、搜索、查找、替换、数值操作、集合操作等。
std::sort
#include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> vec = {5, 2, 4, 1, 3}; // 使用 std::sort 对向量进行排序 std::sort(vec.begin(), vec.end()); // 遍历排序后的向量并输出每个元素 for (const auto& elem : vec) { std::cout << elem << " "; } std::cout << std::endl; return 0; }
STL 还提供了容器适配器,包括栈(stack)、队列(queue)和优先队列(priority_queue),它们都是基于其他容器实现的高级数据结构。
std::stack
#include <iostream> #include <stack> int main() { std::stack<int> stk; // 入栈操作 stk.push(1); stk.push(2); stk.push(3); // 出栈操作 while (!stk.empty()) { std::cout << stk.top() << " "; stk.pop(); } std::cout << std::endl; return 0; }
STL 中的算法和容器经常结合使用,例如在容器中搜索特定元素、统计元素出现次数、对容器中的元素进行条件筛选等。
std::find
#include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; int target = 3; // 使用 std::find 在向量中搜索特定元素 auto it = std::find(vec.begin(), vec.end(), target); if (it != vec.end()) { std::cout << "Found at index: " << std::distance(vec.begin(), it) << std::endl; } else { std::cout << "Not found" << std::endl; } return 0; }
通过结合使用容器和算法,可以实现各种常见的数据结构和算法操作,并且大大提高了代码的可读性和可维护性。