私は持っていlist
ます:
list<Student>* l;
指定されたインデックスで要素を取得したいと思います。例:
l->get(4)//getting 4th element
それを可能にする関数または方法はlist
ありますか?
std::list
にはランダム アクセス イテレータがないため、先頭のイテレータから 4 回ステップする必要があります。これは手動で、またはC++11 のstd::advanceまたは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::advance
、std::nextを介して O(1) で同等の操作を実行できます。[]
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
要素へのランダム アクセスが必要な場合は、a を使用してから、演算子をvector
使用して 4 番目の要素を取得できます。[]
vector<Student> myvector (5); // initializes the vector with 5 elements`
myvector[3]; // gets the 4th element in the vector
std::vector
あなたが使用することができます
myVector.at(i)
// i 番目の要素を取得する