| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
move_iterator::operator[] | ||||
| Non-member functions | ||||
(until C++20)(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++11) |
/* unspecified */ operator[]( difference_type n)const; | (constexpr since C++17) (until C++20) | |
constexpr reference operator[]( difference_type n)const; | (since C++20) | |
Returns a reference to the element at specified relative location.
Contents |
| n | - | position relative to current location |
std::move(current [n])(until C++20)ranges::iter_move(current + n)(since C++20)
The return type is unspecified because the return type of the underlying iterator'soperator[] is also unspecified (seeLegacyRandomAccessIterator). | (until C++20) |
#include <cstddef>#include <iomanip>#include <iostream>#include <iterator>#include <list>#include <string>#include <vector> void print(auto rem,constauto& v){for(std::cout<< rem;constauto& e: v)std::cout<<std::quoted(e)<<' ';std::cout<<'\n';} int main(){std::vector<std::string> p{"alpha","beta","gamma","delta"}, q; print("1) p: ", p); std::move_iterator it{p.begin()}; for(std::size_t t{}; t!= p.size();++t) q.emplace_back(it[t]); print("2) p: ", p); print("3) q: ", q); std::list l{1,2,3};std::move_iterator it2{l.begin()};// it2[1] = 13; // Compilation error: the underlying iterator// does not model the random access iterator// *it2 = 999; // Compilation error: using rvalue as lvalue}
Possible output:
1) p: "alpha" "beta" "gamma" "delta"2) p: "" "" "" ""3) q: "alpha" "beta" "gamma" "delta"
| accesses the pointed-to element (public member function)[edit] |