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

use*_*815 8 c++ get list

我有一个list:

list<Student>* l;
Run Code Online (Sandbox Code Playgroud)

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

l->get(4)//getting 4th element
Run Code Online (Sandbox Code Playgroud)

有没有一个功能或方法list 可以让它这样做?

jua*_*nza 10

std::list没有随机访问迭代器,所以你必须从前迭代器步骤4次.您可以手动或使用std :: advancestd :: next在C++ 11中执行此操作,但请记住列表的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';
Run Code Online (Sandbox Code Playgroud)

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

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

std::vector<Student> v = ...; 
std::cout << v[4] << '\n';    // UB if v has less than 4 elements
std::cout << v.at(4) << '\n'; // throws if v has less than 4 elements
Run Code Online (Sandbox Code Playgroud)


Pat*_*h92 6

这里有一个get()返回函数_iStudent_list

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