如何在C++中获取List中特定位置的元素
由于 std::list 在内部以双向链表的形式存储元素,因此列表没有随机访问运算符[]可通过索引访问元素,因此要访问任何 K th 位置的元素,需要从开头一个一个迭代到 K th 元素,而不是迭代 K 次。为此,使用 STL 的 std::advance() 函数进行线性时间查找。
语法:
advance(InputIterator& it, Distance N)
参数: 该函数接受两个参数,即要遍历列表的迭代器以及要移动到的位置。 位置可以为负以进行随机访问和双向迭代器。
返回类型: 该函数没有返回类型。
下面是上述方法的C ++实现:
// 使用advance的C++程序访问列表的Kth元素
#include <bits/stdc++.h>
using namespace std;
// Driver Code
int main()
{
// 创建带有初始值100的列表
list<int> li(5, 100);
// 将20和30插入列表
li.push_back(20);
li.push_back(30);
// 列表的元素是
// 100, 100, 100, 100, 100, 20, 30
// 将迭代器初始化为列表的开头
list<int>::iterator it = li.begin();
// 将迭代器移动5个元素
advance(it, 5);
// 打印迭代器处的元素
cout << *it;
return 0;
}
20