如何在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
相关产品推荐
相关产品推荐

