博客
关于我
std::swap C++11示例
阅读量:278 次
发布时间:2019-03-01

本文共 1331 字,大约阅读时间需要 4 分钟。

C++11 中的std::swap

header	// moved from 
to
in C++11non-array (1) template
void swap (T& a, T& b) noexcept (is_nothrow_move_constructible
::value && is_nothrow_move_assignable
::value);array (2) template
void swap(T (&a)[N], T (&b)[N]) noexcept (noexcept(swap(*a,*b)));

注意:

Type T shall be move-constructible and move-assignable (or have swap defined for it, for version (2)).

std::swap 在C++11中定义在,而不再是头文件中。上述两个函数等效为:

template 
void swap (T& a, T& b){ T c(std::move(a)); a=std::move(b); b=std::move(c);}template
void swap (T (&a)[N], T (&b)[N]){ for (size_t i = 0; i

示例:

// swap algorithm example (C++98)#include 
// std::cout#include
// std::swap#include
// std::vectorint main () { int x=10, y=20; // x:10 y:20 std::swap(x,y); // x:20 y:10 std::vector
foo (4,x), bar (6,y); // foo:4个20 bar:6个10 std::swap(foo,bar); // foo:6个10 bar:4个20 std::cout << "foo contains:"; for (std::vector
::iterator it=foo.begin(); it!=foo.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; return 0;}
foo contains: 10 10 10 10 10 10

转载地址:http://xkqx.baihongyu.com/

你可能感兴趣的文章
Mysql配置文件my.ini详解
查看>>
MySQL配置文件深度解析:10个关键参数及优化技巧---强烈要求的福利来咯。
查看>>
Mysql配置表名忽略大小写(SpringBoot连接表时提示不存在,实际是存在的)
查看>>
mysql配置读写分离并在若依框架使用读写分离
查看>>
MySQL里为什么会建议不要使用SELECT *?
查看>>
MySQL里的那些日志们
查看>>
mysql重新安装?忘记root密码?重装Windows、Linux系统导致mysql没法用吗? 这里有你想要的答案
查看>>
mysql重置root密码
查看>>
MySQL锁
查看>>
MySQL锁与脏读、不可重复读、幻读详解
查看>>
MySQL锁机制
查看>>
mysql锁机制,主从复制
查看>>
Mysql锁机制,行锁表锁
查看>>
MySQL锁表问题排查
查看>>
Mysql锁(1):锁概述和全局锁的介绍
查看>>
Mysql锁(2):表级锁
查看>>
MySQL锁,锁的到底是什么?
查看>>
MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案
查看>>
Mysql错误2003 -Can't connect toMySQL server on 'localhost'(10061)解决办法
查看>>
MySQL错误提示mysql Statement violates GTID consistency
查看>>