move-semantics

    10

    2答えて

    あなたがタイプstd::vector<std::string>の変数を持っていて、初期化子リストで初期化しましょう: using V = std::vector<std::string>; V v = { "Hello", "little", "world", "of", "move", "semantics" }; コンパイラは、リテラル文字列ごとに一時的std::stringを作成し、こ

    1

    3答えて

    ローカル変数の最終的なスコープ内の出現が右辺値として扱われていますか? (return文のように)。以下のコードでは、文字列はベクトルに移動されるか、V.push_back(std::move(newitem))は明示的に書き込まれますか?あなたの例newitemで struct Element { std::string s1 {}; std::string s2 {}; } voi

    6

    3答えて

    私は次のように非常に単純なクラスを持っている: class Foo { public: Foo() {} Foo(const Foo&) = delete; Foo(Foo&&) {} void operator=(const Foo&) = delete; void operator=(Foo&&) {} void dump()

    3

    2答えて

    "C++ Concurrency in Action"の本を読んでいて、スレッドセーフなデータ構造(スタックなど)で例外の安全性を理解しようとしています。競合状態を避けるために、著者の状態は、popは両方の操作を行う必要があります - しかし、ポップ、スタックから項目を返す:ポップ()関数は、ポップ値を返すだけでなく、からそれを削除するように定義された 場合スタックが変更された後にのみポップされた

    1

    1答えて

    私はムーブコンストラクタを実装するクラスBarを持っています。 インスタンスBar bの場合、void fooRvalRef(Bar&&)をfooRvalRef(std::move(b))と呼ぶと、Barの移動コンストラクタは呼び出されません。 一方、関数void foo(Bar)の場合は、foo(std::move(b))を使用して呼び出すと、Barの移動コンストラクタが呼び出されます。 なぜで

    3

    1答えて

    isocpp.org状態ということ: 移動ベースのstd ::並べ替え()とstd ::設定::挿入()が速くベースのバージョンをコピーするよりも、 15倍であることが測定されている[...]場合あなたのタイプが移動 操作を持っている場合、 標準アルゴリズムから自動的にパフォーマンスの利益を得ることができます。あなたは何の動きコンストラクタを持っていないユーザー定義型にsort()を呼び出すか、代

    2

    2答えて

    私は、標準ライブラリオブジェクトから移動した後、そのオブジェクトが有効であるが未定義の状態にあることを理解しています。しかし、unique_ptrの場合、それはどのように定義されていませんか?経験的には、以下のコードは動作するようです。つまり、p1から移動した後、 "if (p1)"はfalseを評価します。直観的には、これは正しい動作のようです。しかし、私はこれに頼ることができますか? #inc

    0

    2答えて

    私は小惑星のバージョンを作っていますが、私はあなたが向いている方向に特定の量のピクセルをテレポートできるシステムを作成しようとしていました。試してみるたびに、画像は地図の同じ場所に移動します。私はそのアイデアを廃止して動き出しましたが、私はこのサイトを思い出して、誰かが知っていればそれはあなた達だろうと決めました。 私はこのコンセプトを開始しました: //多分// x = xstart; y =

    -2

    1答えて

    this(信じられないほどよく書かれた)記事については、転送参考をScott Meyersが受け取りました。今 、記事のこの部分に焦点を当てる: template <class... Args> void emplace_back(Args&&... args); // deduced parameter types ⇒ type deduction; ... // && ≡ u

    8

    1答えて

    Rustの移動セマンティクスの素晴らしい例がここに記載されています:Rust Move Semantics、Rust By ExampleのWebサイト 私は両方のケースについて基本的な理解を示しています。最初のものはプリミティブが新しい​​エイリアスを持つ方法で、最終結果はi32というコピーがCopyの特性を利用するため、そのまま使用することができます。これは私には分かりやすい。 さらに、多くの