STL 不提供通过索引将迭代器返回到容器中的函数是有原因的吗?
例如,假设我想将一个元素插入 std::list
但在第 n 个位置。看来我必须通过 begin()
之类的方法检索迭代器并将 n
添加到该迭代器。我在想,如果我可以在第 n 个位置使用类似 std::list::get_nth_iterator(n)
的迭代器,那会更容易。
我怀疑我误解了STL的原理。谁能帮忙解释一下?
谢谢 蜜蜂乐队
最佳答案
您可以使用 advance()
来自 <iterator>
header :
<罢工>
list<foo>::iterator iter = advance(someFooList.begin(), n);
罢工>
list<foo>::iterator iter = someFooList.begin();
std::advance( iter, n);
如果迭代器支持随机访问(如 vector
),它将非常有效地工作,如果它只支持增加(或减少)迭代器,如 list
, 它会起作用,但只能尽可能好。
关于c++ - STL 不提供通过索引返回迭代器的函数有什么原因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2067479/