# std::move_iterator<Iter>::operator[]

< cpp‎ | iterator‎ | move iterator

/*unspecified*/ operator[]( difference_type n ) const; |  | (C++11 起) (C++17 前)
constexpr /*unspecified*/ operator[]( difference_type n ) const; |  | (C++17 起)

返回在指定相相对位置的引用。

### 参数

n | - | 相对于当前位置的位置。

### 返回值

到在相对位置元素的右值引用，即 std::move(base()[n]) (C++20 前)ranges::iter_move(base() + n) (C++20 起) 。

### 示例

    #include <iomanip>
    #include <iostream>
    #include <iterator>
    #include <list>
    #include <string>
    #include <vector>

    void print(auto rem, auto const& v) {
        for (std::cout << rem; auto const& e : v)
            std::cout << 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 (size_t t{0U}; 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;   // 编译错误 ~ 底层迭代器不实现随机访问迭代器
    //  *it2 = 999;    // 编译错误：以右值为左值
    }

可能的输出：

    1) p: "alpha" "beta" "gamma" "delta"
    2) p: "" "" "" ""
    3) q: "alpha" "beta" "gamma" "delta"

### 参阅

operator*operator-> (C++11)(C++11)(C++20 中弃用) | 访问被指向的元素 (公开成员函数)