C++ コンセプト: ValueSwappable
提供: cppreference.com
![]() |
このページは、Google 翻訳を使って英語版から機械翻訳されました。
翻訳には誤りや奇妙な言い回しがあるかもしれません。文章の上にポインタをおくと、元の文章が見れます。誤りを修正して翻訳を改善する手助けをしてください。翻訳についての説明は、ここをクリックしてください。 |
この型の2つのオブジェクトを間接参照することができ、結果の値はswap()とユーザー定義std::swaps両方が表示されている..コンテキストに修飾されていない関数呼び出しswap()を使用して交換することができます
Original:
Two objects of this type can be dereferenced and the resulting values can be swapped using unqualified function call swap() in the context where both std::swap and the user-defined swap()s are visible.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集] 要件
タイプTは
ValueSwappable
場合ですOriginal:
Type T is
ValueSwappable
ifThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
1)
タイプ
T
はIterator
要件を満たしていますOriginal:
Type
T
satisfies the Iterator
requirementsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
2)
タイプ
x
のいずれdereferencableオブジェクトT
(つまり、エンドイテレータ以外の任意の値)については、*x
はSwappable
要件を満たし.Original:
For any dereferencable object
x
of type T
(that is, any value other than the end iterator), *x
satisfies the Swappable
requirements.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
多くの標準ライブラリ関数は、引数が標準ライブラリにはスワップを実行する任意の時間は、それが
ValueSwappable
と同等のものを使用することを意味しusing std::swap; swap(*iter1, *iter2):を満たすことを期待し.Original:
Many standard library functions expect their arguments to satisfy
ValueSwappable
, which means that any time the standard library performs a swap, it uses the equivalent of using std::swap; swap(*iter1, *iter2):.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集] 例
このコードを実行します
#include <iostream> #include <vector> class IntVector { std::vector<int> v; IntVector& operator=(IntVector); // not assignable public: void swap(IntVector& other) { v.swap(other.v); } }; void swap(IntVector& v1, IntVector& v2) { v1.swap(v2); } int main() { IntVector v1, v2; // IntVector is Swappable, but not MoveAssignable IntVector* p1 = &v1; IntVector* p2 = &v2; // IntVector* is ValueSwappable std::iter_swap(p1, p2); // OK: iter_swap requires ValueSwappable // std::swap(v1, v2); // compiler error! std::swap requires MoveAssignable }