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/