MST

星途 面试题库

面试题:C++ STL迭代器end在复杂容器嵌套结构中的区间判断

假设有一个`std::vector<std::list<int>>`这样的嵌套容器结构,在遍历这个嵌套容器时,如何通过`end`迭代器来准确判断各个层次的区间边界,以避免访问越界?请详细说明思路,并给出关键代码片段实现。
34.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

思路

  1. 外层循环遍历 std::vector<std::list<int>>,获取每个 std::list<int>
  2. 内层循环遍历每个 std::list<int>,通过 end 迭代器判断是否到达列表末尾。

关键代码片段

#include <iostream>
#include <vector>
#include <list>

int main() {
    std::vector<std::list<int>> nestedContainer;
    // 初始化 nestedContainer
    nestedContainer.emplace_back(std::list<int>{1, 2, 3});
    nestedContainer.emplace_back(std::list<int>{4, 5});

    for (const auto& innerList : nestedContainer) {
        for (auto it = innerList.begin(); it != innerList.end(); ++it) {
            std::cout << *it << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

在上述代码中:

  1. 外层 for 循环遍历 nestedContainer 中的每个 std::list<int>
  2. 内层 for 循环通过 it != innerList.end() 判断是否到达当前 std::list<int> 的末尾,以此避免访问越界。