C++ 中的链表如何使用 STL 列表转到“下一个元素”

问题描述 投票:0回答:4

我有一个非常基本的问题。我想使用STL的列表而不是创建我自己的链表(我的代码如下所示)

struct myList
{

    myList *next;
    myList *previous;
};

myList->next = NULL;

使用STL列表:

#include <list>

std::list<int> L;
L.push_back(1);

我的问题是,如何访问STL列表中的“下一个”元素?

c++ linked-list
4个回答
7
投票

std::list
是一个容器。要访问各个节点,您需要使用迭代器。

例如,要获取头节点,您可以使用

std::list<int>::const_iterator cit = L.begin();

要移动到下一个节点,您可以使用

++ cit;

6
投票

使用 std::advance:

std::list<int> mylist;
...
int index = 5;
std::list<int>::iterator ith_iterator = mylist.begin();
std::advance(ith_iterator, index);
int& ith_element = *ith_iterator;

1
投票

使用迭代器

std::list<int>::iterator i = L.begin();
std::list<int>::iterator i_end = L.end();
while(i!=i_end)
   {
   ++i;
   }

0
投票

从 C++11 开始,您可以使用迭代器库提供的 std::next()

#include <iterator>
#include <list>

std::list<int> L;
L.push_back(1);
L.push_back(2);

auto it = L.begin();
std::cout << *it << std::next(it);
© www.soinside.com 2019 - 2024. All rights reserved.