当前位置: 首页 > news >正文

C++中STL容器应用

一、STL容器核心应用

1. vector(动态数组)

特性:连续内存、随机访问O(1)、尾部操作高效

// 高性能数值计算
vector<double> processSensorData() {vector<double> readings;readings.reserve(1000);  // 预分配内存避免多次扩容for(int i=0; i<1000; ++i) {readings.push_back(getSensorValue());}// 使用STL算法处理数据auto max_val = *max_element(readings.begin(), readings.end());transform(readings.begin(), readings.end(), readings.begin(),[max_val](double x) {return x/max_val; });return readings;
}// 二维数组模拟
vector<vector<int>> matrix(5, vector<int>(5, 0));  // 5x5矩阵初始化
 
 

2. list(双向链表)

特性:任意位置插入/删除O(1)、不支持随机访问

// 高频交易订单簿
struct Order {double price;int quantity;
};list<Order> orderBook;// 插入时自动排序
void addOrder(Order newOrder) {auto it = find_if(orderBook.begin(), orderBook.end(),[&](const Order& o) {return o.price > newOrder.price; });orderBook.insert(it, newOrder);
}// 快速删除失效订单
orderBook.remove_if([](const Order& o) {return o.quantity <= 0; });
 
 

3. map/set(红黑树实现)

特性:自动排序、查找O(log n)

// 字典管理
map<string, string> configMap = {{"resolution", "1920x1080"},{"volume", "75"}
};// 安全访问
if(auto it = configMap.find("volume"); it != configMap.end()) {cout << "当前音量:" << it->second << endl;
}// 多键索引
multimap<string, Employee> nameIndex;  // 允许重复键
 
 

4. unordered_map(哈希表)

特性:平均O(1)访问、无序存储

// 快速查找表
unordered_map<string, int> wordCount;// 词频统计
string text = "a quick brown fox jumps over the lazy dog";
istringstream iss(text);
string word;
while(iss >> word) {++wordCount[word];
}// 查找高频词
auto highFreq = max_element(wordCount.begin(), wordCount.end(),[](auto& a, auto& b) {return a.second < b.second; });
 
 

5. deque(双端队列)

特性:头尾操作高效、分段连续存储

// 滑动窗口处理
deque<int> window;
const int WINDOW_SIZE = 5;void processData(int newValue) {window.push_back(newValue);if(window.size() > WINDOW_SIZE) {window.pop_front();}// 计算窗口平均值double avg = accumulate(window.begin(), window.end(), 0.0) / window.size();
}
 
 

常见陷阱与解决方案

  1. 迭代器失效问题
    vector<int> vec {1,2,3,4,5};
    for(auto it = vec.begin(); it != vec.end(); ) {if(*it % 2 == 0) {it = vec.erase(it);  // 正确方式} else {++it;}
    }
http://www.jsqmd.com/news/24429/

相关文章:

  • P7914 [CSP-S 2021] 括号序列
  • 破解跨地域研发协同难题:2025主流制品管理平台选型对比与关键指标解析
  • C#领域驱动设计在 ERP 项目中的应用设计
  • ansible 配置阿里源 实例
  • 借助 ChatGPT API 将 AI 集成到测试自动化框架中
  • 2025 年拉力试验机厂家最新推荐排行榜:聚焦专精特新企业技术实力与市场口碑深度解析
  • easyui gridview中toolbar中按钮的显示与否
  • 逆合成孔径雷达(ISAR)成像中的包络对齐和相位补偿算法MATLAB实现
  • 2025 年洗车机厂家最新推荐排行榜:实力企业技术服务测评及选购指南全自动 / 卷帘门 / 无接触 / 龙门式 / 隧道式 / 智能无人洗车机公司推荐
  • 251027 复现VMScape
  • 2025 年试验机厂家最新推荐排行榜:聚焦专精特新企业,全方位解析技术实力与市场口碑
  • 2025年锌铝镁桥架公司 top 10 推荐
  • 2025年锌铝镁桥架产品行业推荐与洞察
  • 2025 年德州清水混凝土修补,德州仿清水混凝土修补,德州外墙仿清水混凝土修补公司最新推荐,聚焦资质、案例、售后的五家企业深度解读
  • 2025 年德州混凝土修补,山东专业混凝土修补,山东建筑清水混凝土修补,山东装饰清水混凝土修补公司最新推荐,聚焦资质、案例、售后的五家企业深度解读
  • 高端网站设计不只是“好看”——兰亭妙微解读5个提升商业价值的设计策略
  • 前后端分离,千万别再搞错了!
  • OpenRouter vs. SightAI:统一入口,还是统一“智能体验”? - sight
  • ansible init 初始化实例
  • 详细分析Logback日志过大 - 教程
  • 写给26届文科大学应届生的秋招求职建议 - jobleap.cn助你找到满意的工作
  • 产品技术文档新范式:用PandaWiki构建智能化知识管理体系
  • 解析某省零解赛题
  • 2025 年 10 月天河区台历印刷,天河区台历印刷设计公司最新推荐,聚焦资质、案例、售后的五家机构深度解读
  • 小程序为什么越做越像App?兰亭妙微解析3个界面设计底层逻辑
  • 通用知识手册
  • 洛谷题单指南-进阶数论-CF687B Remainders Game
  • 2025 年 10 月天河区画册印刷,天河区印刷画册,天河区画册印刷设计,天河区画册印刷制作厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读
  • 2025 年 10 月广州画册印刷制作,广州公司画册印刷,广州宣传画册印刷,广州画册印刷设计厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读
  • 智能体来了:AI智能体就业培训的八大核心模块,开启未来职业新赛道