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不编译。
答案 0 :(得分:3)
list
迭代器是Bidirectional iterator, it's not
随机访问迭代器. You can't call
operator-`就可以了。
您可以尝试使用std::advance
将迭代器移动到容器的中间
std::advance(ble.begin(), ble.size()/2);