容器结尾与指向内部项目的迭代器之间的差异。 C ++

时间:2013-11-16 00:19:44

标签: c++ iterator

list<int> l;
list<int>::iterator start;
list<int>::iterator end;
list<int>::iterator mid;
for (int i = 0; i < 100; ++i)
    l.push_back(i);
start= l.begin();
end= l.end();
mid = start+ (end- start) / 2;
cout << *mid << endl;

好的,我现在有一个具体的例子。 end-start不编译。

1 个答案:

答案 0 :(得分:3)

list迭代器是Bidirectional iterator, it's not随机访问迭代器. You can't call operator-`就可以了。

您可以尝试使用std::advance将迭代器移动到容器的中间

std::advance(ble.begin(), ble.size()/2);