如何从std :: list中获取特定元素?

N. *_*los 1 c++ list

我已经使用Java很长一段时间了,决定改用C++.我已经写了这样一个列表:

std::list <Player*> players;
Run Code Online (Sandbox Code Playgroud)

我想要做的就是从这个列表中获取一个特定的元素.我记得在Java中调用了一个".get(index)"方法,但我在C++中找不到类似的东西.谁能帮我?谢谢.

Rob*_*edy 5

std::list课程不提供随机访问.您可以将其视为链接列表.

对于随机访问,请使用std::vectorstd::deque替代.然后你就可以阅读了players[index].

如果您致力于std::list,那么您可以通过将迭代器推进到您需要的位置来获得线性时间随机访问.例如:

std::list<Player*>::const_iterator it = players.begin();
std::advance(it, index);
Run Code Online (Sandbox Code Playgroud)

现在*it指的是你想要的元素.如果您使用的是C++ 11或更高版本,则可以将上述内容缩短为单个语句:

auto it = std::next(players.begin(), index);
Run Code Online (Sandbox Code Playgroud)

  • @ N.Spyropoulos - 一个`std :: list`是一个链表.没有以随机访问方式直接进入特定项目的事情. (2认同)
  • 要进入第二个项目,请从第一个项目开始,然后将迭代器前进一次.要获得第一百项,从第一项开始并将迭代器前进99次. (2认同)
  • @N.Spyropoulos对于随机访问,使用`std :: array`,`std :: vector`或`std :: deque`. (2认同)