名前空間
変種
操作

std::move_iterator

提供: cppreference.com
< cpp‎ | iterator
 
 
イテレータライブラリ
イテレータプリミティブ
イテレータアダプタ
ストリームイテレータ
イテレータ操作
(C++11)
(C++11)
範囲アクセス
(C++11)(C++14)
(C++11)(C++14)
(C++14)(C++14)
(C++14)(C++14)
コンテナアクセス
(C++17)
(C++17)
(C++17)
 
 
ヘッダ <iterator> で定義
template< class Iterator >
class move_iterator;
(C++11およびそれ以降)

std::move_iterator は、逆参照がベースとなるイテレータから返された値を右辺値に変換することを除いて、ベースとなるイテレータ (少なくとも InputIterator でなければなりません) とまったく同様に振る舞うイテレータアダプタです。 このイテレータが入力イテレータとして使用された場合、その効果は値をコピーするのではなくムーブします。

目次

[編集] メンバ関数

メンバ型 定義
iterator_type Iterator
difference_type std::iterator_traits<Iterator>::difference_type
pointer Iterator
value_type std::iterator_traits<Iterator>::value_type
iterator_category std::iterator_traits<Iterator>::iterator_category
reference
value_type&& (C++17以前)
std::iterator_traits<Iterator>::reference が参照の場合は同じ型の右辺値参照、そうでなければ (ラップされたイテレータが値で返す場合など) 無変更の std::iterator_traits<Iterator>::reference (C++17およびそれ以降)

[編集] メンバ関数

新しいイテレータアダプタを構築します
(パブリックメンバ関数) [edit]
別のイテレータを代入します
(パブリックメンバ関数) [edit]
ベースとなるイテレータにアクセスします
(パブリックメンバ関数) [edit]
イテレータの指す要素にアクセスします
(パブリックメンバ関数) [edit]
インデックスによって要素にアクセスします
(パブリックメンバ関数) [edit]
イテレータをインクリメントもしくはデクリメントします
(パブリックメンバ関数) [edit]

[編集] メンバオブジェクト

メンバ名 定義
current (private) base() イテレータのコピー
(説明専用)

[編集] 非メンバ関数

ベースとなるイテレータを比較します
(関数テンプレート) [edit]
イテレータを進めます
(関数テンプレート) [edit]
2つのイテレータアダプタ間の距離を計算します
(関数テンプレート) [edit]

[編集]

#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
#include <numeric>
#include <string>
 
int main()
{
    std::vector<std::string> v{"this", "is", "an", "example"};
 
    std::cout << "Old contents of the vector: ";
    for (auto& s : v)
        std::cout << '"' << s << "\" ";
 
    typedef std::vector<std::string>::iterator iter_t;
    std::string concat = std::accumulate(
                             std::move_iterator<iter_t>(v.begin()),
                             std::move_iterator<iter_t>(v.end()),
                             std::string());  // Can be simplified with std::make_move_iterator
 
    std::cout << "\nConcatenated as string: " << concat << '\n'
              << "New contents of the vector: ";
    for (auto& s : v)
        std::cout << '"' << s << "\" ";
    std::cout << '\n';
}

出力例:

Old contents of the vector: "this" "is" "an" "example"
Concatenated as string: thisisanexample
New contents of the vector: "" "" "" ""

[編集] 関連項目

引数から推定した型の std::move_iterator を作成します
(関数テンプレート) [edit]