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

如何在vector<pair<int, int>>中以步长2迭代处理元素

如何在vector<pair<int, int>>中以步长2迭代处理元素

嘿,我来帮你搞定这个迭代的问题~你想要每次取两个连续的pair来处理,那原来的i++肯定不行,得把步长改成2才行,同时还要注意别越界。

首先,把循环的增量从i++改成i += 2,然后调整循环条件,确保每次你要访问的i+1位置都存在,不会超出vector的范围。比如可以把循环条件设为i < myVector.size() - 1,这样就能保证每次都能拿到两个有效的pair。

修改后的代码大概是这样的:

vector<pair<int, int>> myVector = {{X1, Y1}, {X2, Y2}, {X3, Y3}, {X4,Y4}, ....};

for (size_t i = 0; i < myVector.size() - 1; i += 2) {
    // 取出两对的坐标
    int x1 = myVector[i].first;
    int y1 = myVector[i].second;
    int x2 = myVector[i+1].first;
    int y2 = myVector[i+1].second;
    
    // 调用你的绘图函数
    DrawLine(x1, y1, x2, y2);
}

这样一来,第一次循环i=0,处理的是{X1,Y1}和{X2,Y2};第二次i=2,处理{X3,Y3}和{X4,Y4},完全符合你的需求~

另外要提一句:如果你的vector元素个数是奇数,最后一个单独的pair会被跳过,因为没法凑成一对。要是你需要处理这种情况,可以在循环结束后加个判断,比如:

if (myVector.size() % 2 != 0) {
    // 处理最后一个单独的pair,比如myVector.back()
    int x = myVector.back().first;
    int y = myVector.back().second;
    // 这里写对应的处理逻辑
}

备注:内容来源于stack exchange,提问作者Dastoger Bashar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:14:38