导入
STL 容器简介
理解泛型编程的强大功能,以及如何利用序列容器和适配器实现高效的数据管理。
1#include <iostream> 2#include <vector> 3 4int main() { 5 // 1. 创建整数向量 6 std::vector<int> numbers = {10, 20, 30}; 7 8 // 2. 动态添加元素 9 numbers.push_back(40); // 大小自动增加 10 numbers.push_back(50); 11 12 // 3. 访问元素 13 std::cout << "第一个元素: " << numbers[0] << "\n"; 14 std::cout << "当前大小: " << numbers.size() << "\n"; 15 16 // 4. 使用 .at() 安全访问(越界时抛出异常) 17 std::cout << numbers.at(1) << "\n"; 18}
1#include <iostream> 2#include <vector> 3 4int main() { 5 std::vector<int> nums = {10, 20, 30}; 6 7 // 有效访问 8 std::cout << nums[1] << std::endl; // 输出: 20 9 std::cout << nums.at(1) << std::endl; // 输出: 20 10 11 std::cout << nums[5] << std::endl; // 未定义行为 12 std::cout << nums.at(5) << std::endl; // 抛出 std::out_of_range 13}
1#include <iostream> 2#include <array> 3 4int main() { 5 // std::array<Type, Size> 6 std::array<int, 3> point = {1, 2, 3}; 7 8 std::cout << "大小: " << point.size() << "\n"; // 始终为 3 9 10 // 我们可以修改值,但无法添加或删除元素 11 point[0] = 100; 12 // point.push_back(4); // 错误: std::array 大小固定 13 14 for (int value : point) { 15 std::cout << "元素: " << value << " "; 16 } 17 18 std::cout << "\n"; 19}
1#include <iostream> 2#include <deque> 3 4int main() { 5 std::deque<int> history; 6 7 history.push_back(1); // [1] 8 history.push_back(2); // [1, 2] 9 10 // 高效地在前端插入 11 history.push_front(0); // [0, 1, 2] 12 13 std::cout << "前端: " << history.front() << "\n"; // 0 14 std::cout << "后端: " << history.back() << "\n"; // 2 15}
1#include <iostream> 2#include <unordered_map> 3#include <string> 4 5int main() { 6 std::unordered_map<int, std::string> students; 7 8 students[101] = "Alice"; 9 students[102] = "Bob"; 10 students[103] = "Charlie"; 11 12 std::cout << "学生 102: " << students[102] << "\n"; 13 14 if (students.find(104) == students.end()) { 15 std::cout << "学生 104 未找到\n"; 16 } 17 18 students.erase(103); 19 20 for (const auto& pair : students) { 21 std::cout << pair.first << ": " << pair.second << "\n"; 22 } 23}
1#include <iostream> 2#include <map> 3#include <string> 4 5int main() { 6 std::map<std::string, int> shapes; 7 8 shapes["Circle"] = 5; 9 shapes["Square"] = 10; 10 shapes["Triangle"] = 8; 11 12 std::cout << "正方形: " << shapes["Square"] << "\n"; 13 14 for (const auto& pair : shapes) { 15 std::cout << pair.first << ": " << pair.second << "\n"; 16 } 17}
1#include <iostream> 2#include <stack> 3 4int main() { 5 std::stack<int> numbers; 6 7 numbers.push(10); 8 numbers.push(20); 9 numbers.push(30); 10 11 std::cout << "顶部: " << numbers.top() << "\n"; 12 13 numbers.pop(); 14 15 std::cout << "弹出后顶部: " << numbers.top() << "\n"; 16}
1#include <iostream> 2#include <queue> 3 4int main() { 5 std::queue<int> tasks; 6 7 tasks.push(1); 8 tasks.push(2); 9 tasks.push(3); 10 11 std::cout << "前端: " << tasks.front() << "\n"; 12 13 tasks.pop(); 14 15 std::cout << "弹出后前端: " << tasks.front() << "\n"; 16}