c++ - 迭代器指向哪个索引

标签 c++ iterator

vector 有一个迭代器。我想知道迭代器指向哪个索引。所以我做了以下但我不确定。

int temp = -1;
std::vector <int> ::iterator f;

for (f=eFace[e].begin(); f!=eFace[e].end(); ++f)
{
    if (*f == face)
{
    switch (f-eFace[e].begin())
    {
        case 0:
        temp = 5;                                   
        break;
        case 1:
        temp = 3;
        break;
        case 2:
        temp = 4;
        break;
        case 3:
        temp = 1;
        break;
        case 4:
        temp = 2;
        break;
        case 5:
        temp = 0;
        break;
            default:
        throw;
    }

    break;
    }
}

最佳答案

std::vector<int>::size_type index = std::distance (eFace [e].begin(), f);

请注意,如果您在每个循环中都执行它,这可能会很慢。 vector 的另一种选择是:

std::vector<int>::size_type index = f - eFace [e].begin();

这是可行的,因为 vector 使用随机访问迭代器,它需要定义减法,如下面的 Steve Jessop 所指出的。

关于c++ - 迭代器指向哪个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10349130/

相关文章:

c++ - 如何将shared_ptr转换为私有(private)基类?

c++ - 基于整体类模板专门化一个类方法

c++ - 在C++中使用变量而不是 `#define`指定数组大小是否不好? (C错误: variably modified at file scope) [closed]

Python:如何断言可迭代的第一个元素的类型?

c++ - 自己的迭代器因 std::sort 而崩溃

c++ - 从 Windows 服务获取 %appdata% [C++]

c++ - 多线程程序中的 std::atomic<int> memory_order_relaxed VS volatile sig_atomic_t

java - 采访: Collections Iterator

perl - 如何在 Perl 中迭代/取消引用子例程引用数组?

java - 链接列表 : Iterator vs List Iterator