如何从c ++ List获取指定索引处的元素

时间:2013-05-25 07:52:44

标签: c++ list get

我有list

list<Student>* l;

我想在指定的索引处获取一个元素。例如:

l->get(4)//getting 4th element

list中是否有一个功能或方法可以实现这一功能?

4 个答案:

答案 0 :(得分:10)

std::list没有随机访问迭代器,所以你必须从前迭代器步骤4次。您可以手动或使用std::advance或C ++ 11中的std::next执行此操作,但请记住列表的O(N)操作。

#include <iterator>
#include <list>

....

std::list<Student> l; // look, no pointers!
auto l_front = l.begin();

std::advance(l_front, 4);

std::cout << *l_front << '\n';

修改:原始问题也是关于矢量的问题。现在这是无关紧要的,但仍然可以提供信息:

std::vector确实有随机访问迭代器,因此如果你有C ++ 11支持,你可以通过std::advancestd::next在O(1)中执行等效操作,{ {1}}运算符或[]成员函数:

at()

答案 1 :(得分:4)

这是一个get()函数,它返回_i中的Student _list

Student get(list<Student> _list, int _i){
    list<Student>::iterator it = _list.begin();
    for(int i=0; i<_i; i++){
        ++it;
    }
    return *it;
}

答案 2 :(得分:2)

如果您想随机访问元素,则应使用vector然后使用[]运算符来获取第4个元素。

vector<Student> myvector (5); // initializes the vector with 5 elements`
myvector[3]; // gets the 4th element in the vector

答案 3 :(得分:1)

对于std::vector,您可以使用

myVector.at(i) //检索ith元素