我可以在C ++中创建一个循环的std :: list吗?

时间:2015-11-03 15:43:08

标签: c++ linked-list iterator std stdlist

我需要一个带有循环的LinkedList,并希望操纵指针等。我想知道我是否可以使用std :: list而不是实现我自己的LinkedList类,并使用它的迭代器几乎就像我使用指针一样。但似乎迭代者不允许我这样做。我知道,这就是我试图做的,看起来并不合适。我是std的新手,请耐心等待!

我希望循环的开始位于节点100处。

int main() {
  std::list<int> l = {1, 3, 5, 7, 9, 11, 13, 15, 100, 103, 104, 106};

  std::list<int>::iterator it1 = l.begin();
  while (*it1 != 100) it1 = std::next(it1);

  std::list<int>::iterator it2 = l.begin();
  while (*it2 != 106) it2 = std::next(it2);

  std::next(it2) = it1;  //(106)->next = 100

  std::cout << *(std::next(it2)); //it won't print 100, (obviously?)
}

我认为尝试将迭代器视为指针是完全错误的,但是我绝对不能跳过实现我自己的LinkedList吗?

0 个答案:

没有答案