c++ - 如果 std::iter_swap 传递值,它如何调用 std::swap?
问题描述
我正在阅读一些函数的文档,并对它们的标准实现感兴趣。我读到了交换函数,这意味着它只有在两个变量作为引用传递时才会改变它们的值
template <class T> void swap ( T& a, T& b )
{
T c(a); a=b; b=c;
}
没关系。我能够传递一些基本类型、类、结构等的变量。当然,如果一个类以某种方式实现了赋值运算符。
但是我陷入了困境:
template<class ForwardIt1, class ForwardIt2>
void iter_swap(ForwardIt1 a, ForwardIt2 b)
{
std::swap(*a, *b);
}
在这里,这个函数传递的不是迭代器,而是它们的解引用值!因此,我假设交换接收特定值,例如 5 和 6,而不是一些变量。那么,我错在哪里了?
解决方案
推荐阅读
- reactjs - 在打字稿中返回具有任意属性的函数
- git - 如何记录 git 合并冲突及其解决方案但不自动解决冲突?
- javascript - Multiple select form tag for the same name getting the last option always
- python - 如何使用 += 添加到 python 中的列表而不使用方括号一次添加一个字符?
- python - 我怎样才能使表格模型有效地工作?
- sql - 这个 SQL 查询有问题吗
- delphi - 在 delphi 网格中使用 rpad
- php - CakePHP 3.7 - 干预 ImageUpload 错误“无法从路径读取图像”
- python - 来自数据框的带有 Matplotlib 的日期时间堆积条形图
- linux - Windows 10 上拒绝 Clion 和 cmd ssh WSL