|
VC++中遍历vector的几种常见方法
在VC++中遍历vector<FILES>可采用以下方法,综合参考搜索结果中C++遍历vector的最佳实践:
一、传统迭代器遍历
- for (auto it = vec.begin(); it != vec.end(); ++it) {
- <span style="background-color: rgb(255, 255, 255);">FILES </span>item = *it;
- // 操作item成员如item.szFileName等
- }
复制代码
特点:兼容性最好,支持所有C++标准
二、C++11范围for循环(推荐)
- for (const auto& item : vec) {
- // 直接使用item.szFileName等成员
- // 使用引用避免拷贝开销
- }
复制代码
优势:代码简洁,自动类型推导
三、下标遍历(需注意线程安全)
- for (size_t i = 0; i < vec.size(); ++i) {
- <span style="background-color: rgb(255, 255, 255);">FILES </span>item = vec[i];
- // 或直接vec[i].szFileName
- }
复制代码
适用场景:需要索引值的操作
四、并行遍历(VC++特有)
- #include <ppl.h>
- concurrency::parallel_for_each(vec.begin(), vec.end(),
- [](<span style="background-color: rgb(255, 255, 255);">FILES</span>& item){
- // 并行处理逻辑
- });
复制代码
注意:需包含Parallel Patterns Library头文件
五、反向遍历
- for (auto rit = vec.rbegin(); rit != vec.rend(); ++rit) {
- // 逆向处理元素
- }
复制代码
最佳实践建议:
优先使用C++11范围for循环,语法最简洁
需要修改元素时使用auto&引用方式
大型对象遍历时避免值拷贝
MFC项目需确保包含afx.h头文件
|
|