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

如何访问vector<pair<int,pair<int,int>>> D[20]?存储与取值操作是否正确?

嘿,我来一步步帮你理清这个问题~

关于vector<pair<int, pair<int, int>>> D[20]的访问与操作问题

1. 如何访问这个数组?

首先明确结构:D是一个包含20个元素的数组,每个元素都是vector<pair<int, pair<int, int>>>类型的动态向量。访问要分三层递进:

  • 先定位数组索引:D[i](i从0到19),拿到第i个vector对象;
  • 再定位vector内的元素:D[i][j](j是vector元素的索引,从0开始),拿到一个pair<int, pair<int, int>>对象;
  • 最后访问嵌套的pair成员:
    • 外层pair的第一个int值:D[i][j].first;
    • 内层嵌套pair的第一个int值:D[i][j].second.first;
    • 内层嵌套pair的第二个int值:D[i][j].second.second。

举个实际访问的例子:

// 访问第2个数组元素(索引1)里的第1个vector元素(索引0)的内层pair第二个值
int target_val = D[1][0].second.second;

2. 这种存储方式是否正确?

语法上完全合法,至于是否“正确”取决于你的业务需求:
如果你的数据恰好是「20个固定分组,每个分组里有若干条记录,每条记录包含一个独立int值+一对关联int值」,那这个结构非常适配。比如用来存储“20个区域的物流订单,每个订单包含订单号+(收件人ID,送达次数)”这类场景,就很合理。

当然如果你的分组内记录数固定,换成二维数组可能更高效,但从语法和逻辑合理性来说,这个写法没任何问题。

3. 你需要的操作是否可行?

完全可以实现!我把你的需求拆解成具体代码示例:

步骤1:将内层pair的第二个位置设为0

假设要操作D[i][j]这个元素:

// 把嵌套pair的第二个值置为0
D[i][j].second.second = 0;

步骤2:用变量a获取x的值,变量b获取y的值

假设x对应内层pair的第一个值,y对应第二个值:

int a = D[i][j].second.first; // 拿到x
int b = D[i][j].second.second; // 拿到y

步骤3:将内层pair中的0值自增1

直接对目标值做自增操作即可:

D[i][j].second.second++;
// 等价于 D[i][j].second.second += 1;

完整可运行的示例片段

#include <vector>
#include <utility> // 必须包含这个头文件才能使用pair

using namespace std; // 简化代码,实际项目可根据情况选择是否使用

int main() {
    // 初始化数组,每个vector可以先添加元素
    vector<pair<int, pair<int, int>>> D[20];
    // 给D[0]添加一条示例记录:外层int是100,内层pair是(15, 20)
    D[0].emplace_back(100, make_pair(15, 20));
    
    // 执行你的需求操作
    D[0][0].second.second = 0; // 内层pair第二个值设为0
    int a = D[0][0].second.first; // a = 15
    int b = D[0][0].second.second; // b = 0
    D[0][0].second.second++; // 现在内层第二个值变成1
    
    return 0;
}

小提醒

  • 务必包含<vector>和<utility>头文件,否则编译器会报错;
  • 访问索引前要确保在合法范围内:i不能超过19,j不能超过对应vector的size()-1,否则会触发越界访问的未定义行为;
  • 如果vector是空的,直接访问D[i][j]会崩溃,操作前要用push_back或emplace_back先添加元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:08:37