首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ValueSwappable

这种类型的两个对象可以取消引用,并且可以使用不限定函数调用交换结果值。swap()在这两种情况下std::swap和用户定义的swap()是可见的。

所需

T型ValueSwappable如果。

1%29型T满足Iterator所需

2%29用于任何可撤销的对象x类型T%28--即,除结束迭代器%29以外的任何值,*x满足Swappable所需经费。

许多标准库函数期望它们的参数满足ValueSwappable,这意味着每当标准库执行交换时,它都使用等效的usingstd::swap; swap(*iter1, *iter2);...

二次

代码语言:javascript
复制
#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
}

二次

代码语言:txt
复制
 ? cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com