如何在具有给定索引的列表中获取对象

How to get an object in a list with a given Index

本文关键字:列表 获取 取对象 索引      更新时间:2023-10-16

我制作了一个数组,其中包含游戏中几个传送瓦片的位置列表。

 std::list<vec2> teleportTiles[15];

在这里,它将元素添加到列表中:

        std::list<vec2>::iterator lastField = teleportTiles[Index - 144].end();
        float width = i / m_Height;
        float height = i / m_Width;
        teleportTiles[Index - 144].insert(lastField, vec2(ceil(width), ceil(height)));

但现在我想访问这个列表中的一个随机元素,但如何访问呢?有这样的东西吗:(在java中可以工作)

teleportTiles.get(
    myRandom(0, teleportTiles.size() - 1)
);

(在java中可以使用)

这是因为Java的List有多种形式,最显著的是LinkedListArrayList:

接口随机访问

List实现所使用的标记接口,用于指示它们支持快速(通常为恒定时间)随机接入。该接口的主要目的是允许通用算法在应用于随机或顺序访问列表时改变其行为,以提供良好的性能。

当应用于顺序访问列表(如LinkedList)时,用于操纵随机访问列表(例如ArrayList)的最佳算法可以产生二次行为。鼓励通用列表算法在应用算法之前检查给定列表是否是该接口的实例,如果将该算法应用于顺序访问列表,则该算法将提供较差的性能,并在必要时更改其行为以确保可接受的性能。

参考


C++的std::list是一个双链表,因此无法提供有效的随机访问,因此根本不提供。如果您想要随机访问,请使用std::vector。尤其是如果您正在执行的唯一其他操作是在末尾追加。