从第n个元素开始迭代向量

乔尔·西(Joel Seah)

我正在尝试从第n个元素开始迭代向量不知道我该怎么做。

我有一个矢量我的向量A具有PC1-PC10的10个元素,我的向量B具有User1-User20的20个元素
所以我想做的是,当我的向量A向量B都到达第10个元素时,也就是说向量A的最后一个元素,我想重复迭代向量A,但是从第11个元素开始迭代向量B这样我就可以用它做一些事情。

以下是我想出的简化代码,但从技术上讲,它是关于同一件事的:

vector<string>::iterator b = vecB.begin();
for (int i = 1; i < 2; i++) {
    for (vector<string>::iterator a = vecA.begin(); a != vecA.end() ; a++) {
        if (a == vecA.end()) {
            b = vecB.begin() + 10; //here the iterator for verB should start from the 11th element
        }
    ++b
    }
}

我应该弄乱向量B的迭代器吗?还是有另一种选择?

编辑
看来,我毕竟一直在问一个错误的问题。我已标记了该问题的答案,并将在不久后发布另一个问题。感谢您对我的问题的快速回复!

谢尔盖(Sergey Kalinichenko)

if嵌套循环内的条件将永远是真实的,因为它与循环条件冲突:

for (vector<string>::iterator a = vecA.begin(); a != vecA.end() ; a++) {
// This check ----------------------------------^^^^^^^^^^^^^^^
// guarantees that this will never succeed:
//      vvvvvvvvvvvvvvv
    if (a == vecA.end()) {
        ...
    }
}

您应该这样重写代码:

vector<string>::iterator b = vecB.begin();
// Check that vecB has sufficient number of elements before entering the loop.
for (int i = 1 ; i < 2 ; i++) {
    for (vector<string>::iterator a = vecA.begin(); a != vecA.end() ; ++a, ++b) {
        ...
    }
    // At this point we know for sure that a == vecA.end(),
    // because it is a post-condition of the for loop above.
    b = std::next(vecB.begin(), 11);
}

的调用++b可以移动到循环头中。

注意:的使用,std::next尽管

b = vecB.begin() + 10;

编译向量时,并不能保证适用于所有类型的容器。使用std::next来代替:

b = std::next(vecB.begin(), 11);

注意:此代码假设一个vecB元素至少比元素多11个vecA如果您在进入循环之前检查了该假设,则可能会好的。如果这个假设不成立,则代码将具有未定义的行为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从第n个元素开始迭代向量

来自分类Dev

Clojure循环通过从第n个元素开始的向量而不是0

来自分类Dev

嵌套向量迭代器-仅显示第n个向量

来自分类Dev

迭代器中的第n个元素

来自分类Dev

迭代器中的第n个元素

来自分类Dev

第K个元素N * N和向量

来自分类Dev

向量化获取每个第n个元素(但第n个元素是可变的)

来自分类Dev

CSS:选择所有从第n个元素开始

来自分类Dev

CSS:选择所有从第n个元素开始

来自分类Dev

如何从第n个元素开始传递列表

来自分类Dev

在R中向量的第n个元素之后加上值

来自分类Dev

在R中向量的第n个元素之后加上值

来自分类Dev

如何选择具有最大第 n 个元素的向量

来自分类Dev

在向量组合上减去第 n 个元素

来自分类Dev

如何到达向量的第N个元素,其中内部向量可能具有不同的长度?

来自分类Dev

如何在C ++中找到向量的第m个和第n个元素之间的max元素?

来自分类Dev

将第 N 个元素推入元素 K-1 的向量后,对象指针向量的元素 K 变为空

来自分类Dev

如何在迭代器中屏蔽除第n个元素之外的每个元素?

来自分类Dev

如何获得R中两个向量之间的元素的第n个匹配项?

来自分类Dev

矩阵的第i行乘以向量的第i个元素

来自分类Dev

根据1 xn个向量制作一个nx n-1矩阵,其中第i行是没有第i个元素的向量,没有for循环

来自分类Dev

获取整个列的data.frame列内的向量的第n个元素-R

来自分类Dev

在输入向量的笛卡尔积中创建第n个元素的元组

来自分类Dev

获取整个列的data.frame列内的向量的第n个元素-R

来自分类Dev

停在第n个元素?

来自分类Dev

列表的第n个元素

来自分类Dev

Grep 第 n 个元素

来自分类Dev

向量的最后一个元素的迭代器

来自分类Dev

向量的最后一个元素的迭代器

Related 相关文章

  1. 1

    从第n个元素开始迭代向量

  2. 2

    Clojure循环通过从第n个元素开始的向量而不是0

  3. 3

    嵌套向量迭代器-仅显示第n个向量

  4. 4

    迭代器中的第n个元素

  5. 5

    迭代器中的第n个元素

  6. 6

    第K个元素N * N和向量

  7. 7

    向量化获取每个第n个元素(但第n个元素是可变的)

  8. 8

    CSS:选择所有从第n个元素开始

  9. 9

    CSS:选择所有从第n个元素开始

  10. 10

    如何从第n个元素开始传递列表

  11. 11

    在R中向量的第n个元素之后加上值

  12. 12

    在R中向量的第n个元素之后加上值

  13. 13

    如何选择具有最大第 n 个元素的向量

  14. 14

    在向量组合上减去第 n 个元素

  15. 15

    如何到达向量的第N个元素,其中内部向量可能具有不同的长度?

  16. 16

    如何在C ++中找到向量的第m个和第n个元素之间的max元素?

  17. 17

    将第 N 个元素推入元素 K-1 的向量后,对象指针向量的元素 K 变为空

  18. 18

    如何在迭代器中屏蔽除第n个元素之外的每个元素?

  19. 19

    如何获得R中两个向量之间的元素的第n个匹配项?

  20. 20

    矩阵的第i行乘以向量的第i个元素

  21. 21

    根据1 xn个向量制作一个nx n-1矩阵,其中第i行是没有第i个元素的向量,没有for循环

  22. 22

    获取整个列的data.frame列内的向量的第n个元素-R

  23. 23

    在输入向量的笛卡尔积中创建第n个元素的元组

  24. 24

    获取整个列的data.frame列内的向量的第n个元素-R

  25. 25

    停在第n个元素?

  26. 26

    列表的第n个元素

  27. 27

    Grep 第 n 个元素

  28. 28

    向量的最后一个元素的迭代器

  29. 29

    向量的最后一个元素的迭代器

热门标签

归档