You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何遍历存储pair的pair的容器并简洁访问全部元素?

遍历嵌套pair容器的简洁方法

你尝试的[[a, b], [c, d]]结构化绑定写法编译失败的原因是:C++标准目前不支持这种直接双层嵌套的结构化绑定语法——结构化绑定只能针对单个聚合类型(比如pair、tuple)进行解构,无法一次性穿透两层pair直接绑定内部的四个int变量。

下面是满足你“少局部变量、无多余拷贝”要求的最优遍历方案:

std::vector<std::pair<std::pair<int, int>, std::pair<int, int>>> vec = {
        {{1, 2}, {3, 4}},
        {{5, 6}, {7, 8}}
    };

for (const auto& [outer_first, outer_second] : vec) {
    const auto& [a, b] = outer_first;
    const auto& [c, d] = outer_second;
    // 在此处使用a、b、c、d,所有变量都是原容器元素的常量引用,无任何拷贝操作
}

额外说明

  • 全程使用const auto&绑定,确保完全复用容器内的原始元素,不会创建多余的局部变量拷贝;
  • 若需要修改容器内的元素,可去掉const,改用auto&绑定;
  • 如果你强行追求一行式写法(不推荐,可读性会大幅下降),可以用std::tie实现,但会产生变量拷贝,不如引用绑定高效:
for (const auto& [p1, p2] : vec) {
    int a, b, c, d;
    std::tie(a, b) = p1;
    std::tie(c, d) = p2;
    // 使用a、b、c、d
}

内容的提问来源于stack exchange,提问作者Mampac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 03:11:06